mirror of
https://github.com/google/flatbuffers.git
synced 2026-06-07 05:47:36 +00:00
[C++] Improve Allocator handling (#4312)
* Improve Allocator handling - Templatize Allocator on vector_downward, and make it own the allocator instance so it can manage lifetimes. - Templatize + rename FlatBufferBuilderT accordingly, and add a typedef to FlatBufferBuilder so old code continues to work. - Fix some issues with the release deleter - More details in github issue #4311 * Fix constexpr for older MSVC * Reimplement allocator improvements via inheritance Instead of templates, use an abstract base class and some unique_ptrs to implement the new and improved allocator. * Fix misplaced newline * Add missing override keyword * Add macro for func delete to support older compilers * Explicitly move BufferDeleter (maybe fixes VS 10?) * Revert previous attempt at VS10 fix * Try yet another workaround for MS 10 * Use FLATBUFFERS_NOEXCEPT macro * Add FLATBUFFERS_OVERRIDE macro * Fix some issues with MSVC 16 hack * Remove dep on unique_ptr * Update DEPRECATED macro with a message * Sigh, no delegating ctors before c++11 * Fix simple_allocator stub * Relax FlatBufferBuilder ctor * Add vector_downward reset + assert in clear * Rename DetachedBuffer to FlatBuffer + remove unnecessary deprecations * Add flatbuffers::FlatBufferBuilder::Release() * Address remaining allocator-improvements comments
This commit is contained in:
committed by
Wouter van Oortmerssen
parent
398ae0cb6b
commit
fb87c0d3c6
@@ -83,7 +83,7 @@ void lcg_reset() { lcg_seed = 48271; }
|
||||
std::string test_data_path = "tests/";
|
||||
|
||||
// example of how to build up a serialized buffer algorithmically:
|
||||
flatbuffers::unique_ptr_t CreateFlatBufferTest(std::string &buffer) {
|
||||
flatbuffers::DetachedBuffer CreateFlatBufferTest(std::string &buffer) {
|
||||
flatbuffers::FlatBufferBuilder builder;
|
||||
|
||||
auto vec = Vec3(1, 2, 3, 0, Color_Red, Test(10, 20));
|
||||
@@ -1520,11 +1520,11 @@ int main(int /*argc*/, const char * /*argv*/[]) {
|
||||
auto flatbuf = CreateFlatBufferTest(rawbuf);
|
||||
AccessFlatBufferTest(reinterpret_cast<const uint8_t *>(rawbuf.c_str()),
|
||||
rawbuf.length());
|
||||
AccessFlatBufferTest(flatbuf.get(), rawbuf.length());
|
||||
AccessFlatBufferTest(flatbuf.data(), flatbuf.size());
|
||||
|
||||
MutateFlatBuffersTest(flatbuf.get(), rawbuf.length());
|
||||
MutateFlatBuffersTest(flatbuf.data(), flatbuf.size());
|
||||
|
||||
ObjectFlatBuffersTest(flatbuf.get());
|
||||
ObjectFlatBuffersTest(flatbuf.data());
|
||||
|
||||
SizePrefixedTest();
|
||||
|
||||
@@ -1534,7 +1534,7 @@ int main(int /*argc*/, const char * /*argv*/[]) {
|
||||
test_data_path;
|
||||
#endif
|
||||
ParseAndGenerateTextTest();
|
||||
ReflectionTest(flatbuf.get(), rawbuf.length());
|
||||
ReflectionTest(flatbuf.data(), flatbuf.size());
|
||||
ParseProtoTest();
|
||||
UnionVectorTest();
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user