Hi Michael, The thing about AnyPointer is that it's not just a pointer to a value -- it's a (native) pointer to a (capnp) pointer, the latter of which has to exist within some larger message.
The right way to initialize an AnyPointer, then, is more like how you'd initialize a nested struct -- you start with the parent object's Builder and call getVal() to get an AnyPointer::Builder, then you call setAs<whatever>(value) on that, like: context.getResults().getVal().setAs<SomeInterface>(capClient); Does that help? -Kenton On Tue, Aug 27, 2019 at 7:09 AM Michael Berg <[email protected]> wrote: > Hello, > > interface A(T) { > value @0 () -> (val :T); > } > > is there a way to get from a capnp::Capability::Client to a > capnp::AnyPointer? > > I'm struggling with some generic schema where I'm implementing "A::Server" > which holds an AnyPointer member field to store a value of some type T. An > instance of A will later be returned to a client which can then get the > value via calling the "value" method. The value to be stored in A can for > instance either be a list of Capability::Client or a just a > Capability::Client. So when I want to instantiate A I got (e.g. as a > parameter to the method) a Capability::Client not an AnyPointer. > So my problem is, that I can easily get a Capabilty::Client from an > AnyPointer via AnyPointer::getAs<some Interface>(), but I find no way to > get from a Capabilty::Client to an AnyPointer which I need in order to > create an instance of A (in my C++ code). I have the feeling that I'm > missing something very obvious. > Can somebody help? > > Thank you and best regards > > Michael > > > > -- > You received this message because you are subscribed to the Google Groups > "Cap'n Proto" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/capnproto/708e920e-09bd-4343-a4bd-3c82bf6238e9%40googlegroups.com > <https://groups.google.com/d/msgid/capnproto/708e920e-09bd-4343-a4bd-3c82bf6238e9%40googlegroups.com?utm_medium=email&utm_source=footer> > . > -- You received this message because you are subscribed to the Google Groups "Cap'n Proto" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/capnproto/CAJouXQkjUeNj9XL%2BTo30v4kqfUydZrge5y1mGAGW7RTthPRWEA%40mail.gmail.com.
