31 #include "capnp/serialize.h" 43 template<
typename TObject,
typename TSerializationReader,
typename TSerializationBuilder>
52 static bool serializeIntoBuffer(
const TObject*
object,
unsigned char* buffer, uint64_t maxSize, uint64_t& usedSize);
58 static bool serializeIntoBuilder(TSerializationBuilder& objectBuilder,
const TObject*
object);
59 static bool serializeIntoMessage(capnp::MallocMessageBuilder& message,
const TObject*
object);
60 static TObject* deserializeFromStreamReader(capnp::InputStreamMessageReader& message);
64 template<
typename TObject,
typename TSerializationReader,
typename TSerializationBuilder>
67 kj::ArrayPtr<const unsigned char> source(input, size);
69 kj::ArrayInputStream inputStream(source);
72 kj::ArrayPtr<capnp::word> scratchArray((capnp::word*) scratch.begin(), size);
74 capnp::InputStreamMessageReader message(inputStream, capnp::ReaderOptions(), scratchArray);
76 return deserializeFromStreamReader(message);
80 template<
typename TObject,
typename TSerializationReader,
typename TSerializationBuilder>
85 capnp::InputStreamMessageReader message(readStream);
87 return deserializeFromStreamReader(message);
91 template<
typename TObject,
typename TSerializationReader,
typename TSerializationBuilder>
94 capnp::MallocMessageBuilder message;
96 bool result = serializeIntoMessage(message,
object);
103 return computeSerializedSizeInWords(message) *
sizeof(uint64_t);
107 template<
typename TObject,
typename TSerializationReader,
typename TSerializationBuilder>
110 capnp::MallocMessageBuilder message;
112 bool result = serializeIntoMessage(message,
object);
120 uint64_t messageSize = computeSerializedSizeInWords(message) *
sizeof(uint64_t);
122 if (maxSize < messageSize)
124 NVBLAST_LOG_ERROR(
"When attempting to serialize into an existing buffer, the provided buffer was too small.");
129 kj::ArrayPtr<unsigned char> outputBuffer(buffer, maxSize);
130 kj::ArrayOutputStream outputStream(outputBuffer);
132 capnp::writeMessage(outputStream, message);
134 usedSize = messageSize;
139 template<
typename TObject,
typename TSerializationReader,
typename TSerializationBuilder>
142 capnp::MallocMessageBuilder message;
144 bool result = serializeIntoMessage(message,
object);
153 const uint64_t blockSize = computeSerializedSizeInWords(message) *
sizeof(uint64_t);
155 size = blockSize + offset;
159 kj::ArrayPtr<unsigned char> outputBuffer(buffer + offset, blockSize);
160 kj::ArrayOutputStream outputStream(outputBuffer);
162 capnp::writeMessage(outputStream, message);
168 template<
typename TObject,
typename TSerializationReader,
typename TSerializationBuilder>
171 capnp::MallocMessageBuilder message;
173 bool result = serializeIntoMessage(message,
object);
182 writeMessage(blastOutputStream, message);
#define NVBLAST_ALLOC(_size)
Definition: NvBlastGlobals.h:220
Definition: NvBlastExtSerializationCAPN.h:44
physx::shdfnd::Array< T, Allocator > type
Definition: NvBlastArray.h:48
static bool serializeIntoBuffer(const TObject *object, unsigned char *buffer, uint64_t maxSize, uint64_t &usedSize)
Definition: NvBlastExtSerializationCAPN.h:108
static TObject * deserializeFromStream(std::istream &inputStream)
Definition: NvBlastExtSerializationCAPN.h:81
virtual void * requestBuffer(size_t size)=0
static uint64_t serializationBufferSize(const TObject *object)
Definition: NvBlastExtSerializationCAPN.h:92
Definition: NvBlastExtOutputStream.h:39
#define NVBLAST_LOG_ERROR(_msg)
Definition: NvBlastGlobals.h:246
Definition: NvBlastExtSerialization.h:56
static TObject * deserializeFromBuffer(const unsigned char *input, uint64_t size)
Definition: NvBlastExtSerializationCAPN.h:65
static bool serializeIntoStream(const TObject *object, std::ostream &outputStream)
Definition: NvBlastExtSerializationCAPN.h:169
Definition: NvBlastArray.h:37