Thanks Kenton. That worked great. On Thursday, June 2, 2016 at 8:04:04 PM UTC-4, Kenton Varda wrote: > > Hi, > > Regular Readers and Builders do not currently have equality operators, but > the Any* types (in capnp/any.h) do, and you can convert other types to that > type. So: > > capnp::AnyStruct::Reader left = bookReader; > capnp::AnyStruct::Reader right = bookWriter.asReader(); > return left == right; > > -Kenton > > On Thu, Jun 2, 2016 at 3:01 PM, <[email protected] <javascript:>> > wrote: > >> In fact I take back the TestAnyPointer::Builder blob as it looks like >> that's generated code. Can you please help understand how can the two capnp >> objects be compared? >> >> >> On Thursday, June 2, 2016 at 5:45:06 PM UTC-4, [email protected] >> wrote: >>> >>> Hi, >>> >>> I'm currently experimenting with Cap'n Proto and need to write some >>> custom benchmark tests. One of the things I need to do is to ensure the >>> stored and retrieved data is the same. The way I'm doing that currently >>> (for learning the API's mainly) is >>> >>> >>> ::capnp::MallocMessageBuilder message; >>> >>> AddressBook::Builder bookWriter = message.initRoot<AddressBook>(); >>> >>> >>> /* Generic function to add data to the AddressBook */ >>> >>> writeAddressBook(bookWriter); >>> >>> >>> /* Write to array buffer*/ >>> >>> const kj::Array<capnp::word> serializedBuffer = >>> messageToFlatArray(message); >>> >>> >>> /* Read From array buffer */ >>> >>> ::capnp::FlatArrayMessageReader reader(serializedBuffer.asPtr()); >>> >>> AddressBook::Reader bookReader = reader.getRoot<AddressBook>(); >>> >>> >>> if (bookReader == bookWriter) { >>> >>> std::cout << "Valid in-memory write-read" << std::endl; >>> >>> } else { >>> >>> std::cout << "Oops!!!" << std::endl; >>> >>> } >>> >>> >>> >>> I see some examples in the test.capnp.h where you can get >>> AnyPointer::Builder like so: >>> >>> >>> inline ::capnp::AnyPointer::Builder >>> TestAnyPointer::Builder::getAnyPointerField() { >>> >>> return ::capnp::AnyPointer::Builder( >>> >>> _builder.getPointerField(0 * ::capnp::POINTERS)); >>> >>> } >>> >>> >>> But I guess I'm having a hard time imagining jumping through hoops like >>> to to compare two capnp objects. Is there a better solution for testing >>> equality of two objects; if so please help with example code. >>> >>> >>> Thanks. >>> >> -- >> 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] <javascript:>. >> Visit this group at https://groups.google.com/group/capnproto. >> > >
-- 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.
