diff options
Diffstat (limited to 'common/entitybuffer.h')
-rw-r--r-- | common/entitybuffer.h | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/common/entitybuffer.h b/common/entitybuffer.h index f22c84e..82152c9 100644 --- a/common/entitybuffer.h +++ b/common/entitybuffer.h | |||
@@ -23,6 +23,25 @@ public: | |||
23 | */ | 23 | */ |
24 | static void assembleEntityBuffer(flatbuffers::FlatBufferBuilder &fbb, void const *metadataData, size_t metadataSize, void const *resourceData, size_t resourceSize, void const *localData, size_t localSize); | 24 | static void assembleEntityBuffer(flatbuffers::FlatBufferBuilder &fbb, void const *metadataData, size_t metadataSize, void const *resourceData, size_t resourceSize, void const *localData, size_t localSize); |
25 | static flatbuffers::Offset<flatbuffers::Vector<uint8_t> > appendAsVector(flatbuffers::FlatBufferBuilder &fbb, void const *data, size_t size); | 25 | static flatbuffers::Offset<flatbuffers::Vector<uint8_t> > appendAsVector(flatbuffers::FlatBufferBuilder &fbb, void const *data, size_t size); |
26 | template<typename T> | ||
27 | static const T *readBuffer(const uint8_t *data, int size) | ||
28 | { | ||
29 | flatbuffers::Verifier verifier(data, size); | ||
30 | if (verifier.VerifyBuffer<T>()) { | ||
31 | return flatbuffers::GetRoot<T>(data); | ||
32 | } | ||
33 | return nullptr; | ||
34 | } | ||
35 | |||
36 | template<typename T> | ||
37 | static const T *readBuffer(const flatbuffers::Vector<uint8_t> *data) | ||
38 | { | ||
39 | if (data) { | ||
40 | return readBuffer<T>(data->Data(), data->size()); | ||
41 | } | ||
42 | return nullptr; | ||
43 | } | ||
44 | |||
26 | 45 | ||
27 | private: | 46 | private: |
28 | const Entity *mEntity; | 47 | const Entity *mEntity; |