Hi Kenton, I thought I was almost there, but got stuck here:
One of the use cases involves a "Network" class in C++ python extension
code that needs to serialize several subordinate "region" instances, some
of which are implemented in C++ and some in Python. I am having a problem
with the latter. To demonstrate that specific problem, I defined the
following schemas:
struct NetworkProto {
region @2 : RegionProto;
}
struct RegionProto {
# This stores the data for the RegionImpl. This will be a PyRegionProto
# instance if it is a PyRegion.
regionImpl @0 :AnyPointer;
}
struct PyRegionProto {
regionImpl @0 :AnyPointer;
}
As you recommended, we're passing byte buffers between the python and C++
layers. In this case, I have the C++ method _writePyRegion in the extension
that makes the call into the python layer and converts the bytes returned
by the python layer into `PyRegionProto::Reader`: `PyRegionProto::Reader
Network::_writePyRegion()`.
Then, the following higher level method attempts to stuff the result of
`Network::_writePyRegion` into "NetworkProto:: RegionProto:: regionImpl",
but the compilation fails with "*error: **no member named 'setRegionImpl'
in 'RegionProto::Builder'*":
void Network::write(NetworkProto::Builder& proto) const
{
// Serialize the python region
auto regionProto = proto.initRegion();
regionProto.setRegionImpl(_writePyRegion()); // copy
}
--
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].
Visit this group at https://groups.google.com/group/capnproto.