diff options
author | Christian Mollekopf <chrigi_1@fastmail.fm> | 2015-04-09 14:29:18 +0200 |
---|---|---|
committer | Christian Mollekopf <chrigi_1@fastmail.fm> | 2015-04-09 14:29:18 +0200 |
commit | c4e098fae7340d6d73cd4fbe880440baca1ddd49 (patch) | |
tree | d7762b84f78a4dc502556629f57608d0c3102434 /common/entitybuffer.h | |
parent | 855e3d7d0e3779e76e5af55bbf4c851acbd76e56 (diff) | |
download | sink-c4e098fae7340d6d73cd4fbe880440baca1ddd49.tar.gz sink-c4e098fae7340d6d73cd4fbe880440baca1ddd49.zip |
Refactored buffer extraction from vector.
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; |