/srv/osrm/osrm-backend/third_party/flatbuffers/tests
NameSizeModeActions
docker/-0755rm
FlatBuffers.Benchmarks/-0755rm
FlatBuffers.Test/-0755rm
fuzzer/-0755rm
include_test/-0755rm
MyGame/-0755rm
namespace_test/-0755rm
prototest/-0755rm
rust_usage_test/-0755rm
union_vector/-0755rm
arrays_test.bfbs10640644editdlrm
arrays_test.fbs3170644editdlrm
arrays_test.golden2500644editdlrm
arrays_test.schema.json16560644editdlrm
arrays_test_generated.h130440644editdlrm
DartTest.sh12790755editdlrm
generate_code.bat30570644editdlrm
generate_code.sh22650755editdlrm
GoTest.sh27350755editdlrm
go_test.go556660644editdlrm
JavaScriptTest.js143240644editdlrm
JavaScriptTest.sh7500755editdlrm
JavaScriptUnionVectorTest.js17060644editdlrm
JavaTest.bat9870644editdlrm
javatest.bin5120644editdlrm
JavaTest.java191590644editdlrm
JavaTest.sh12490755editdlrm
KotlinTest.kt164500644editdlrm
KotlinTest.sh14020755editdlrm
lobstertest.lobster47360644editdlrm
LuaTest.bat1450644editdlrm
luatest.lua82350644editdlrm
LuaTest.sh7470755editdlrm
monsterdata_extra.json4200644editdlrm
monsterdata_python_wire.mon3440644editdlrm
monsterdata_test.golden11020644editdlrm
monsterdata_test.json12250644editdlrm
monsterdata_test.mon4400644editdlrm
monster_extra.fbs4840644editdlrm
monster_extra_generated.h140390644editdlrm
monster_test.bfbs117920644editdlrm
monster_test.fbs42550644editdlrm
monster_test.grpc.fb.cc91130644editdlrm
monster_test.grpc.fb.h257510644editdlrm
monster_test.schema.json101480644editdlrm
monster_test_generated.h1363020644editdlrm
monster_test_generated.js872990644editdlrm
monster_test_generated.lobster268490644editdlrm
monster_test_generated.rs638400644editdlrm
monster_test_generated.ts790870644editdlrm
monster_test_my_game.example2_generated.dart15200644editdlrm
monster_test_my_game.example_generated.dart478610644editdlrm
monster_test_my_game_generated.dart16590644editdlrm
native_type_test.fbs2270644editdlrm
native_type_test_generated.h83740644editdlrm
native_type_test_impl.cpp3420644editdlrm
native_type_test_impl.h4930644editdlrm
phpTest.php243900644editdlrm
phpUnionVectorTest.php39060644editdlrm
phpUnionVectorTest.sh1370755editdlrm
PythonTest.sh27850755editdlrm
py_test.py662370644editdlrm
RustTest.bat8740644editdlrm
RustTest.sh12980755editdlrm
test.cpp1242610644editdlrm
TestAll.sh9850644editdlrm
test_assert.cpp20430644editdlrm
test_assert.h25800644editdlrm
test_builder.cpp55000644editdlrm
test_builder.h103950644editdlrm
TypeScriptTest.sh13870755editdlrm
unicode_test.json5030644editdlrm
Edit: /srv/osrm/osrm-backend/third_party/flatbuffers/tests/test_builder.cpp (5500B)
#include "flatbuffers/stl_emulation.h" #include "monster_test_generated.h" #include "test_builder.h" using namespace MyGame::Example; const std::string m1_name = "Cyberdemon"; const Color m1_color = Color_Red; const std::string m2_name = "Imp"; const Color m2_color = Color_Green; struct OwnedAllocator : public flatbuffers::DefaultAllocator {}; class TestHeapBuilder : public flatbuffers::FlatBufferBuilder { private: // clang-format off #if !defined(FLATBUFFERS_CPP98_STL) TestHeapBuilder(const TestHeapBuilder &); TestHeapBuilder &operator=(const TestHeapBuilder &); #endif // !defined(FLATBUFFERS_CPP98_STL) // clang-format on public: TestHeapBuilder() : flatbuffers::FlatBufferBuilder(2048, new OwnedAllocator(), true) {} // clang-format off #if !defined(FLATBUFFERS_CPP98_STL) // clang-format on TestHeapBuilder(TestHeapBuilder &&other) : FlatBufferBuilder(std::move(other)) { } TestHeapBuilder &operator=(TestHeapBuilder &&other) { FlatBufferBuilder::operator=(std::move(other)); return *this; } // clang-format off #endif // !defined(FLATBUFFERS_CPP98_STL) // clang-format on }; // This class simulates flatbuffers::grpc::detail::SliceAllocatorMember struct AllocatorMember { flatbuffers::DefaultAllocator member_allocator_; }; struct GrpcLikeMessageBuilder : private AllocatorMember, public flatbuffers::FlatBufferBuilder { private: GrpcLikeMessageBuilder(const GrpcLikeMessageBuilder &); GrpcLikeMessageBuilder &operator=(const GrpcLikeMessageBuilder &); public: GrpcLikeMessageBuilder() : flatbuffers::FlatBufferBuilder(1024, &member_allocator_, false) {} GrpcLikeMessageBuilder(GrpcLikeMessageBuilder &&other) : FlatBufferBuilder(1024, &member_allocator_, false) { // Default construct and swap idiom. Swap(other); } // clang-format off #if !defined(FLATBUFFERS_CPP98_STL) // clang-format on GrpcLikeMessageBuilder &operator=(GrpcLikeMessageBuilder &&other) { // Construct temporary and swap idiom GrpcLikeMessageBuilder temp(std::move(other)); Swap(temp); return *this; } // clang-format off #endif // !defined(FLATBUFFERS_CPP98_STL) // clang-format on void Swap(GrpcLikeMessageBuilder &other) { // No need to swap member_allocator_ because it's stateless. FlatBufferBuilder::Swap(other); // After swapping the FlatBufferBuilder, we swap back the allocator, which restores // the original allocator back in place. This is necessary because MessageBuilder's // allocator is its own member (SliceAllocatorMember). The allocator passed to // FlatBufferBuilder::vector_downward must point to this member. buf_.swap_allocator(other.buf_); } }; flatbuffers::Offset populate1(flatbuffers::FlatBufferBuilder &builder) { auto name_offset = builder.CreateString(m1_name); return CreateMonster(builder, nullptr, 0, 0, name_offset, 0, m1_color); } flatbuffers::Offset populate2(flatbuffers::FlatBufferBuilder &builder) { auto name_offset = builder.CreateString(m2_name); return CreateMonster(builder, nullptr, 0, 0, name_offset, 0, m2_color); } uint8_t *release_raw_base(flatbuffers::FlatBufferBuilder &fbb, size_t &size, size_t &offset) { return fbb.ReleaseRaw(size, offset); } void free_raw(flatbuffers::grpc::MessageBuilder &, uint8_t *) { // release_raw_base calls FlatBufferBuilder::ReleaseRaw on the argument MessageBuilder. // It's semantically wrong as MessageBuilder has its own ReleaseRaw member function that // takes three arguments. In such cases though, ~MessageBuilder() invokes // ~SliceAllocator() that takes care of deleting memory as it calls grpc_slice_unref. // Obviously, this behavior is very surprising as the pointer returned by // FlatBufferBuilder::ReleaseRaw is not valid as soon as MessageBuilder goes out of scope. // This problem does not occur with FlatBufferBuilder. } void free_raw(flatbuffers::FlatBufferBuilder &, uint8_t *buf) { flatbuffers::DefaultAllocator().deallocate(buf, 0); } bool verify(const flatbuffers::DetachedBuffer &buf, const std::string &expected_name, Color color) { const Monster *monster = flatbuffers::GetRoot(buf.data()); return (monster->name()->str() == expected_name) && (monster->color() == color); } bool verify(const uint8_t *buf, size_t offset, const std::string &expected_name, Color color) { const Monster *monster = flatbuffers::GetRoot(buf+offset); return (monster->name()->str() == expected_name) && (monster->color() == color); } bool release_n_verify(flatbuffers::FlatBufferBuilder &fbb, const std::string &expected_name, Color color) { flatbuffers::DetachedBuffer buf = fbb.Release(); return verify(buf, expected_name, color); } void FlatBufferBuilderTest() { using flatbuffers::FlatBufferBuilder; BuilderTests::all_tests(); BuilderTests::all_tests(); BuilderTests::all_tests(); BuilderReuseTestSelector tests[4] = { REUSABLE_AFTER_RELEASE, REUSABLE_AFTER_RELEASE_RAW, REUSABLE_AFTER_RELEASE_AND_MOVE_ASSIGN, REUSABLE_AFTER_RELEASE_RAW_AND_MOVE_ASSIGN }; BuilderReuseTests::run_tests(TestSelector(tests, tests+4)); BuilderReuseTests::run_tests(TestSelector(tests, tests+4)); BuilderReuseTests::run_tests(TestSelector(tests, tests+4)); }