mirror of
https://github.com/google/flatbuffers.git
synced 2026-06-04 20:48:59 +00:00
Added support for size prefixed buffers.
These are useful for streaming FlatBuffers. The functionality ensures proper alignment of the whole buffer. Tested: on OS X. Bug: 27123865 Change-Id: Ic7d75a618c1bb470ea44c4dcf202ff71f2b3f4f1 Signed-off-by: Wouter van Oortmerssen <wvo@google.com>
This commit is contained in:
@@ -396,6 +396,25 @@ void ObjectFlatBuffersTest(uint8_t *flatbuf) {
|
||||
TEST_EQ(tests[1].b(), 40);
|
||||
}
|
||||
|
||||
// Prefix a FlatBuffer with a size field.
|
||||
void SizePrefixedTest() {
|
||||
// Create size prefixed buffer.
|
||||
flatbuffers::FlatBufferBuilder fbb;
|
||||
fbb.FinishSizePrefixed(CreateMonster(fbb, 0, 200, 300,
|
||||
fbb.CreateString("bob")));
|
||||
|
||||
// Verify it.
|
||||
flatbuffers::Verifier verifier(fbb.GetBufferPointer(), fbb.GetSize());
|
||||
TEST_EQ(verifier.VerifySizePrefixedBuffer<Monster>(nullptr), true);
|
||||
|
||||
// Access it.
|
||||
auto m = flatbuffers::GetSizePrefixedRoot<MyGame::Example::Monster>(
|
||||
fbb.GetBufferPointer());
|
||||
TEST_EQ(m->mana(), 200);
|
||||
TEST_EQ(m->hp(), 300);
|
||||
TEST_EQ_STR(m->name()->c_str(), "bob");
|
||||
}
|
||||
|
||||
// example of parsing text straight into a buffer, and generating
|
||||
// text back from it:
|
||||
void ParseAndGenerateTextTest() {
|
||||
@@ -1242,6 +1261,8 @@ int main(int /*argc*/, const char * /*argv*/[]) {
|
||||
|
||||
ObjectFlatBuffersTest(flatbuf.get());
|
||||
|
||||
SizePrefixedTest();
|
||||
|
||||
#ifndef FLATBUFFERS_NO_FILE_TESTS
|
||||
ParseAndGenerateTextTest();
|
||||
ReflectionTest(flatbuf.get(), rawbuf.length());
|
||||
|
||||
Reference in New Issue
Block a user