35 #define ExtSerializerBoilerplate(_name, _description, _objectTypeID, _encodingID) \ 36 virtual const char* getName() const override { return _name; } \ 37 virtual const char* getDescription() const override { return _description; } \ 38 virtual uint32_t getObjectTypeID() const override { return _objectTypeID; } \ 39 virtual uint32_t getEncodingID() const override { return _encodingID; } 42 #define ExtSerializerReadOnly(_name) \ 43 virtual bool isReadOnly() const override { return true; } \ 44 virtual uint64_t serializeIntoBuffer \ 47 ExtSerialization::BufferProvider& bufferProvider, \ 52 NVBLAST_LOG_WARNING(#_name "::serializeIntoBuffer: ExtPxAsset_RAW serializer is read-only."); \ 54 NV_UNUSED(bufferProvider); \ 61 #define ExtSerializerDefaultFactoryAndRelease(_classname) \ 62 static ExtSerializer* create() \ 64 return NVBLAST_NEW(_classname) (); \ 66 virtual void release() override \ 68 NVBLAST_DELETE(this, _classname); \ 88 virtual const char*
getName()
const = 0;
149 virtual bool registerSerializer(
ExtSerializer& serializer) = 0;
150 virtual bool unregisterSerializer(
ExtSerializer& serializer) = 0;
160 virtual ExtSerializer* findSerializer(uint32_t objectTypeID, uint32_t encodingID) = 0;
163 enum { HeaderSize = 128 };
167 template<
typename Factory,
size_t N>
172 for (
auto f : factories)
175 if (serializer !=
nullptr)
183 NVBLAST_LOG_ERROR(
"Nv::Blast::ExtSerializationLoadSet: failed to register serailizer:");
190 NVBLAST_LOG_ERROR(
"Nv::Blast::ExtSerializationLoadSet: failed to create serailizer.");
203 LittleEndian = (1 << 0),
207 ExtIStream(
const void* buffer,
size_t size) : m_buf(reinterpret_cast<const char*>(buffer)), m_flags(0)
210 m_end = m_buf + size;
211 const uint16_t
x = LittleEndian;
212 m_flags = *
reinterpret_cast<const char*
>(&
x);
239 bool read(
void* buffer,
size_t size)
241 if (!canRead(size))
return false;
242 std::memcpy(buffer, m_cur, size);
247 size_t tellg()
const {
return m_cur - m_buf; }
248 size_t left()
const {
return m_end - m_cur; }
250 bool eof()
const {
return m_cur >= m_end; }
251 bool fail()
const {
return (m_flags & Fail) != 0; }
259 bool isLittleEndian()
const {
return (m_flags & LittleEndian) != 0; }
261 bool canRead(
size_t size)
const {
return m_cur + size <= m_end; }
270 if (s.canRead(
sizeof(T)))
272 if (s.isLittleEndian())
274 x = *
reinterpret_cast<const T*
>(s.m_cur);
275 s.m_cur +=
sizeof(T);
279 char* b =
reinterpret_cast<char*
>(&
x) +
sizeof(T);
280 for (
size_t n =
sizeof(T); n--;) *--b = *s.m_cur++;
bool fail() const
Definition: NvBlastExtSerializationInternal.h:251
Flags
Definition: NvBlastExtSerializationInternal.h:201
virtual const char * getDescription() const =0
SIMD_FORCE_INLINE const btScalar & x() const
Return the x value.
Definition: btVector3.h:275
virtual void * deserializeFromBuffer(const void *buffer, uint64_t size)=0
Definition: NvBlastExtSerializationInternal.h:198
const void * view()
Definition: NvBlastExtSerializationInternal.h:234
virtual uint32_t getObjectTypeID() const =0
virtual ~ExtSerializer()
Definition: NvBlastExtSerializationInternal.h:83
Definition: NvBlastExtSerializationInternal.h:204
virtual const char * getName() const =0
bool eof() const
Definition: NvBlastExtSerializationInternal.h:250
Definition: NvBlastExtSerializationInternal.h:142
virtual bool isReadOnly() const
Definition: NvBlastExtSerializationInternal.h:110
size_t left() const
Definition: NvBlastExtSerializationInternal.h:248
#define NV_INLINE
Definition: NvPreprocessor.h:350
Definition: NvBlastExtSerialization.h:42
bool advance(ptrdiff_t diff)
Definition: NvBlastExtSerializationInternal.h:215
#define NVBLAST_LOG_ERROR(_msg)
Definition: NvBlastGlobals.h:246
Definition: NvBlastExtSerialization.h:56
Definition: NvBlastExtSerializationInternal.h:80
size_t ExtSerializationLoadSet(Nv::Blast::ExtSerializationInternal &serialization, Factory(&factories)[N])
Definition: NvBlastExtSerializationInternal.h:168
size_t tellg() const
Definition: NvBlastExtSerializationInternal.h:247
NV_INLINE ExtIStream & operator>>(ExtIStream &s, T &x)
Definition: NvBlastExtSerializationInternal.h:268
virtual uint32_t getEncodingID() const =0
bool read(void *buffer, size_t size)
Definition: NvBlastExtSerializationInternal.h:239
virtual uint64_t serializeIntoBuffer(void *&buffer, ExtSerialization::BufferProvider &bufferProvider, const void *object, uint64_t offset=0)=0
Definition: NvBlastArray.h:37
virtual bool registerSerializer(ExtSerializer &serializer)=0
ExtIStream(const void *buffer, size_t size)
Definition: NvBlastExtSerializationInternal.h:207