From 45bad5f84df7ca2b2221bd9feb5ec02e685f3255 Mon Sep 17 00:00:00 2001 From: Derek Bailey Date: Mon, 12 Sep 2022 23:07:13 -0700 Subject: [PATCH] UnPackTo disable merge by default --- samples/monster_generated.h | 16 +-- src/idl_gen_cpp.cpp | 68 ++++++------ tests/arrays_test_generated.h | 5 +- .../generated_cpp17/monster_test_generated.h | 100 +++++++++--------- .../optional_scalars_generated.h | 5 +- .../generated_cpp17/union_vector_generated.h | 19 ++-- tests/monster_extra_generated.h | 9 +- tests/monster_test.cpp | 69 +++++++++++- tests/monster_test.h | 2 + tests/monster_test_generated.h | 100 +++++++++--------- .../ext_only/monster_test_generated.hpp | 100 +++++++++--------- .../filesuffix_only/monster_test_suffix.h | 100 +++++++++--------- .../monster_test_suffix.hpp | 100 +++++++++--------- .../namespace_test1_generated.h | 5 +- .../namespace_test2_generated.h | 23 ++-- tests/native_inline_table_test_generated.h | 12 ++- tests/native_type_test_generated.h | 9 +- tests/optional_scalars_generated.h | 5 +- tests/test.cpp | 1 + tests/union_vector/union_vector_generated.h | 19 ++-- 20 files changed, 427 insertions(+), 340 deletions(-) diff --git a/samples/monster_generated.h b/samples/monster_generated.h index 14f3b1c245c..55dfb647fa1 100644 --- a/samples/monster_generated.h +++ b/samples/monster_generated.h @@ -352,7 +352,7 @@ struct Monster FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { verifier.EndTable(); } MonsterT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(MonsterT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(MonsterT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr, bool _merge = false) const; static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const MonsterT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); }; @@ -499,7 +499,7 @@ struct Weapon FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { verifier.EndTable(); } WeaponT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(WeaponT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(WeaponT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr, bool _merge = false) const; static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const WeaponT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); }; @@ -598,19 +598,20 @@ inline MonsterT *Monster::UnPack(const flatbuffers::resolver_function_t *_resolv return _o.release(); } -inline void Monster::UnPackTo(MonsterT *_o, const flatbuffers::resolver_function_t *_resolver) const { +inline void Monster::UnPackTo(MonsterT *_o, const flatbuffers::resolver_function_t *_resolver, bool _merge) const { (void)_o; (void)_resolver; + (void)_merge; { auto _e = pos(); if (_e) _o->pos = flatbuffers::unique_ptr(new MyGame::Sample::Vec3(*_e)); } { auto _e = mana(); _o->mana = _e; } { auto _e = hp(); _o->hp = _e; } { auto _e = name(); if (_e) _o->name = _e->str(); } - { auto _e = inventory(); if (_e) { _o->inventory.resize(_e->size()); std::copy(_e->begin(), _e->end(), _o->inventory.begin()); } } + { auto _e = inventory(); if (_e) {_o->inventory.resize(_e->size()); std::copy(_e->begin(), _e->end(), _o->inventory.begin()); } } { auto _e = color(); _o->color = _e; } - { auto _e = weapons(); if (_e) { _o->weapons.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->weapons[_i] = flatbuffers::unique_ptr(_e->Get(_i)->UnPack(_resolver)); } } } + { auto _e = weapons(); if (_e) {_o->weapons.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { if(_o->weapons[_i]) { _e->Get(_i)->UnPackTo(_o->weapons[_i].get(), _resolver, _merge); } else { _o->weapons[_i] = flatbuffers::unique_ptr(_e->Get(_i)->UnPack(_resolver)); }; } } else if(!_merge) { _o->weapons.resize(0); _o->weapons.shrink_to_fit(); } } { auto _e = equipped_type(); _o->equipped.type = _e; } { auto _e = equipped(); if (_e) _o->equipped.value = MyGame::Sample::EquipmentUnion::UnPack(_e, equipped_type(), _resolver); } - { auto _e = path(); if (_e) { _o->path.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->path[_i] = *_e->Get(_i); } } } + { auto _e = path(); if (_e) {_o->path.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->path[_i] = *_e->Get(_i); } } else if(!_merge) { _o->path.resize(0); _o->path.shrink_to_fit(); } } } inline flatbuffers::Offset Monster::Pack(flatbuffers::FlatBufferBuilder &_fbb, const MonsterT* _o, const flatbuffers::rehasher_function_t *_rehasher) { @@ -663,9 +664,10 @@ inline WeaponT *Weapon::UnPack(const flatbuffers::resolver_function_t *_resolver return _o.release(); } -inline void Weapon::UnPackTo(WeaponT *_o, const flatbuffers::resolver_function_t *_resolver) const { +inline void Weapon::UnPackTo(WeaponT *_o, const flatbuffers::resolver_function_t *_resolver, bool _merge) const { (void)_o; (void)_resolver; + (void)_merge; { auto _e = name(); if (_e) _o->name = _e->str(); } { auto _e = damage(); _o->damage = _e; } } diff --git a/src/idl_gen_cpp.cpp b/src/idl_gen_cpp.cpp index 67d6a0a77bc..5d238c347a1 100644 --- a/src/idl_gen_cpp.cpp +++ b/src/idl_gen_cpp.cpp @@ -26,10 +26,6 @@ #include "flatbuffers/idl.h" #include "flatbuffers/util.h" -#ifndef FLATBUFFERS_CPP_OBJECT_UNPACKTO -#define FLATBUFFERS_CPP_OBJECT_UNPACKTO 0 -#endif - namespace flatbuffers { // Make numerical literal with type-suffix. @@ -74,13 +70,17 @@ static std::string GenIncludeGuard(const std::string &file_name, return guard; } -static bool IsVectorOfPointers(const FieldDef& field) { - const auto& type = field.value.type; - const auto& vector_type = type.VectorType(); +static bool IsVectorOfPointers(const FieldDef &field) { + const auto &type = field.value.type; + const auto &vector_type = type.VectorType(); return type.base_type == BASE_TYPE_VECTOR && vector_type.base_type == BASE_TYPE_STRUCT && - !vector_type.struct_def->fixed && - !field.native_inline; + !vector_type.struct_def->fixed && !field.native_inline; +} + +static bool IsPointer(const FieldDef &field) { + return field.value.type.base_type == BASE_TYPE_STRUCT && + !IsStruct(field.value.type); } namespace cpp { @@ -1065,7 +1065,8 @@ class CppGenerator : public BaseGenerator { return "void " + (inclass ? "" : Name(struct_def) + "::") + "UnPackTo(" + NativeName(Name(struct_def), &struct_def, opts) + " *" + "_o, const flatbuffers::resolver_function_t *_resolver" + - (inclass ? " = nullptr" : "") + ") const"; + (inclass ? " = nullptr" : "") + ", bool _merge" + + (inclass ? " = false" : "") + ") const"; } void GenMiniReflectPre(const StructDef *struct_def) { @@ -1882,7 +1883,8 @@ class CppGenerator : public BaseGenerator { if (vec_type.base_type == BASE_TYPE_UTYPE) continue; const auto cpp_type = field.attributes.Lookup("cpp_type"); const auto cpp_ptr_type = field.attributes.Lookup("cpp_ptr_type"); - const bool is_ptr = IsVectorOfPointers(field) || (cpp_type && cpp_ptr_type->constant != "naked"); + const bool is_ptr = IsVectorOfPointers(field) || + (cpp_type && cpp_ptr_type->constant != "naked"); if (is_ptr) { return true; } } } @@ -2006,7 +2008,8 @@ class CppGenerator : public BaseGenerator { ? cpp_type->constant : GenTypeNative(vec_type, /*invector*/ true, field, /*forcopy*/ true); - const bool is_ptr = IsVectorOfPointers(field) || (cpp_type && cpp_ptr_type->constant != "naked"); + const bool is_ptr = IsVectorOfPointers(field) || + (cpp_type && cpp_ptr_type->constant != "naked"); CodeWriter cw(" "); cw.SetValue("FIELD", Name(field)); cw.SetValue("TYPE", type_name); @@ -3013,7 +3016,8 @@ class CppGenerator : public BaseGenerator { if (field.value.type.element == BASE_TYPE_UTYPE) { name = StripUnionType(Name(field)); } - code += "{ _o->" + name + ".resize(_e->size()); "; + const std::string vector_field = "_o->" + name; + code += "{" + vector_field + ".resize(_e->size()); "; if (!field.value.type.enum_def && !IsBool(field.value.type.element) && IsOneByte(field.value.type.element)) { // For vectors of bytes, std::copy is used to improve performance. @@ -3053,7 +3057,7 @@ class CppGenerator : public BaseGenerator { // (*resolver)(&_o->field, (hash_value_t)(_e)); // else // _o->field = nullptr; - code += "//vector resolver, " + PtrType(&field) + "\n"; + code += "/*vector resolver, " + PtrType(&field) + "*/ "; code += "if (_resolver) "; code += "(*_resolver)"; code += "(reinterpret_cast(&_o->" + name + "[_i]" + @@ -3070,25 +3074,20 @@ class CppGenerator : public BaseGenerator { code += "/* else do nothing */"; } } else { - // clang-format off - #if FLATBUFFERS_CPP_OBJECT_UNPACKTO const bool is_pointer = IsVectorOfPointers(field); if (is_pointer) { code += "if(_o->" + name + "[_i]" + ") { "; code += indexing + "->UnPackTo(_o->" + name + - "[_i].get(), _resolver);"; + "[_i].get(), _resolver, _merge);"; code += " } else { "; } - #endif code += "_o->" + name + "[_i]" + access + " = "; code += GenUnpackVal(field.value.type.VectorType(), indexing, true, field); - #if FLATBUFFERS_CPP_OBJECT_UNPACKTO if (is_pointer) { code += "; }"; } - #endif - // clang-format on } - code += "; } }"; + code += "; } } else if(!_merge) { " + vector_field + ".resize(0); " + + vector_field + ".shrink_to_fit(); }"; } break; } @@ -3116,7 +3115,7 @@ class CppGenerator : public BaseGenerator { // (*resolver)(&_o->field, (hash_value_t)(_e)); // else // _o->field = nullptr; - code += "//scalar resolver, " + PtrType(&field) + " \n"; + code += "/*scalar resolver, " + PtrType(&field) + "*/ "; code += "if (_resolver) "; code += "(*_resolver)"; code += "(reinterpret_cast(&_o->" + Name(field) + "), "; @@ -3133,21 +3132,21 @@ class CppGenerator : public BaseGenerator { } else { // Generate code for assigning the value, of the form: // _o->field = value; - // clang-format off - #if FLATBUFFERS_CPP_OBJECT_UNPACKTO - const bool is_pointer = IsVectorOfPointers(field); + const bool is_pointer = IsPointer(field); + + const std::string out_field = "_o->" + Name(field); + if (is_pointer) { - code += "{ if(_o->" + Name(field) + ") { "; - code += "_e->UnPackTo(_o->" + Name(field) + ".get(), _resolver);"; + code += "{ if(" + out_field + ") { "; + code += "_e->UnPackTo(" + out_field + ".get(), _resolver, _merge);"; code += " } else { "; } - #endif - code += "_o->" + Name(field) + " = "; + code += out_field + " = "; code += GenUnpackVal(field.value.type, "_e", false, field) + ";"; - #if FLATBUFFERS_CPP_OBJECT_UNPACKTO - if (is_pointer) { code += " } }"; } - #endif - // clang-format on + if (is_pointer) { + code += " } } else if (!_merge && " + out_field + ") {" + + out_field + ".reset(); }"; + } } break; } @@ -3399,6 +3398,7 @@ class CppGenerator : public BaseGenerator { "inline " + TableUnPackToSignature(struct_def, false, opts_) + " {"; code_ += " (void)_o;"; code_ += " (void)_resolver;"; + code_ += " (void)_merge;"; for (auto it = struct_def.fields.vec.begin(); it != struct_def.fields.vec.end(); ++it) { diff --git a/tests/arrays_test_generated.h b/tests/arrays_test_generated.h index 090f4648add..b66e3ec8872 100644 --- a/tests/arrays_test_generated.h +++ b/tests/arrays_test_generated.h @@ -299,7 +299,7 @@ struct ArrayTable FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { verifier.EndTable(); } ArrayTableT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(ArrayTableT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(ArrayTableT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr, bool _merge = false) const; static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const ArrayTableT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); }; @@ -357,9 +357,10 @@ inline ArrayTableT *ArrayTable::UnPack(const flatbuffers::resolver_function_t *_ return _o.release(); } -inline void ArrayTable::UnPackTo(ArrayTableT *_o, const flatbuffers::resolver_function_t *_resolver) const { +inline void ArrayTable::UnPackTo(ArrayTableT *_o, const flatbuffers::resolver_function_t *_resolver, bool _merge) const { (void)_o; (void)_resolver; + (void)_merge; { auto _e = a(); if (_e) _o->a = flatbuffers::unique_ptr(new MyGame::Example::ArrayStruct(*_e)); } } diff --git a/tests/cpp17/generated_cpp17/monster_test_generated.h b/tests/cpp17/generated_cpp17/monster_test_generated.h index b2eb23b7f6b..9c71c20978f 100644 --- a/tests/cpp17/generated_cpp17/monster_test_generated.h +++ b/tests/cpp17/generated_cpp17/monster_test_generated.h @@ -886,7 +886,7 @@ struct InParentNamespace FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { verifier.EndTable(); } InParentNamespaceT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(InParentNamespaceT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(InParentNamespaceT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr, bool _merge = false) const; static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const InParentNamespaceT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); }; @@ -940,7 +940,7 @@ struct Monster FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { verifier.EndTable(); } MonsterT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(MonsterT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(MonsterT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr, bool _merge = false) const; static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const MonsterT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); }; @@ -1012,7 +1012,7 @@ struct TestSimpleTableWithEnum FLATBUFFERS_FINAL_CLASS : private flatbuffers::Ta verifier.EndTable(); } TestSimpleTableWithEnumT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(TestSimpleTableWithEnumT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(TestSimpleTableWithEnumT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr, bool _merge = false) const; static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const TestSimpleTableWithEnumT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); }; @@ -1116,7 +1116,7 @@ struct Stat FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { verifier.EndTable(); } StatT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(StatT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(StatT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr, bool _merge = false) const; static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const StatT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); }; @@ -1224,7 +1224,7 @@ struct Referrable FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { verifier.EndTable(); } ReferrableT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(ReferrableT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(ReferrableT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr, bool _merge = false) const; static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const ReferrableT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); }; @@ -1896,7 +1896,7 @@ struct Monster FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { verifier.EndTable(); } MonsterT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(MonsterT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(MonsterT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr, bool _merge = false) const; static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const MonsterT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); }; @@ -2555,7 +2555,7 @@ struct TypeAliases FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { verifier.EndTable(); } TypeAliasesT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(TypeAliasesT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(TypeAliasesT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr, bool _merge = false) const; static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const TypeAliasesT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); }; @@ -2706,9 +2706,10 @@ inline InParentNamespaceT *InParentNamespace::UnPack(const flatbuffers::resolver return _o.release(); } -inline void InParentNamespace::UnPackTo(InParentNamespaceT *_o, const flatbuffers::resolver_function_t *_resolver) const { +inline void InParentNamespace::UnPackTo(InParentNamespaceT *_o, const flatbuffers::resolver_function_t *_resolver, bool _merge) const { (void)_o; (void)_resolver; + (void)_merge; } inline flatbuffers::Offset InParentNamespace::Pack(flatbuffers::FlatBufferBuilder &_fbb, const InParentNamespaceT* _o, const flatbuffers::rehasher_function_t *_rehasher) { @@ -2731,9 +2732,10 @@ inline MonsterT *Monster::UnPack(const flatbuffers::resolver_function_t *_resolv return _o.release(); } -inline void Monster::UnPackTo(MonsterT *_o, const flatbuffers::resolver_function_t *_resolver) const { +inline void Monster::UnPackTo(MonsterT *_o, const flatbuffers::resolver_function_t *_resolver, bool _merge) const { (void)_o; (void)_resolver; + (void)_merge; } inline flatbuffers::Offset Monster::Pack(flatbuffers::FlatBufferBuilder &_fbb, const MonsterT* _o, const flatbuffers::rehasher_function_t *_rehasher) { @@ -2758,9 +2760,10 @@ inline TestSimpleTableWithEnumT *TestSimpleTableWithEnum::UnPack(const flatbuffe return _o.release(); } -inline void TestSimpleTableWithEnum::UnPackTo(TestSimpleTableWithEnumT *_o, const flatbuffers::resolver_function_t *_resolver) const { +inline void TestSimpleTableWithEnum::UnPackTo(TestSimpleTableWithEnumT *_o, const flatbuffers::resolver_function_t *_resolver, bool _merge) const { (void)_o; (void)_resolver; + (void)_merge; { auto _e = color(); _o->color = _e; } } @@ -2784,9 +2787,10 @@ inline StatT *Stat::UnPack(const flatbuffers::resolver_function_t *_resolver) co return _o.release(); } -inline void Stat::UnPackTo(StatT *_o, const flatbuffers::resolver_function_t *_resolver) const { +inline void Stat::UnPackTo(StatT *_o, const flatbuffers::resolver_function_t *_resolver, bool _merge) const { (void)_o; (void)_resolver; + (void)_merge; { auto _e = id(); if (_e) _o->id = _e->str(); } { auto _e = val(); _o->val = _e; } { auto _e = count(); _o->count = _e; } @@ -2816,9 +2820,10 @@ inline ReferrableT *Referrable::UnPack(const flatbuffers::resolver_function_t *_ return _o.release(); } -inline void Referrable::UnPackTo(ReferrableT *_o, const flatbuffers::resolver_function_t *_resolver) const { +inline void Referrable::UnPackTo(ReferrableT *_o, const flatbuffers::resolver_function_t *_resolver, bool _merge) const { (void)_o; (void)_resolver; + (void)_merge; { auto _e = id(); _o->id = _e; } } @@ -2954,66 +2959,60 @@ inline MonsterT *Monster::UnPack(const flatbuffers::resolver_function_t *_resolv return _o.release(); } -inline void Monster::UnPackTo(MonsterT *_o, const flatbuffers::resolver_function_t *_resolver) const { +inline void Monster::UnPackTo(MonsterT *_o, const flatbuffers::resolver_function_t *_resolver, bool _merge) const { (void)_o; (void)_resolver; + (void)_merge; { auto _e = pos(); if (_e) _o->pos = std::unique_ptr(new MyGame::Example::Vec3(*_e)); } { auto _e = mana(); _o->mana = _e; } { auto _e = hp(); _o->hp = _e; } { auto _e = name(); if (_e) _o->name = _e->str(); } - { auto _e = inventory(); if (_e) { _o->inventory.resize(_e->size()); std::copy(_e->begin(), _e->end(), _o->inventory.begin()); } } + { auto _e = inventory(); if (_e) {_o->inventory.resize(_e->size()); std::copy(_e->begin(), _e->end(), _o->inventory.begin()); } } { auto _e = color(); _o->color = _e; } { auto _e = test_type(); _o->test.type = _e; } { auto _e = test(); if (_e) _o->test.value = MyGame::Example::AnyUnion::UnPack(_e, test_type(), _resolver); } - { auto _e = test4(); if (_e) { _o->test4.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->test4[_i] = *_e->Get(_i); } } } - { auto _e = testarrayofstring(); if (_e) { _o->testarrayofstring.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->testarrayofstring[_i] = _e->Get(_i)->str(); } } } - { auto _e = testarrayoftables(); if (_e) { _o->testarrayoftables.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->testarrayoftables[_i] = std::unique_ptr(_e->Get(_i)->UnPack(_resolver)); } } } - { auto _e = enemy(); if (_e) _o->enemy = std::unique_ptr(_e->UnPack(_resolver)); } - { auto _e = testnestedflatbuffer(); if (_e) { _o->testnestedflatbuffer.resize(_e->size()); std::copy(_e->begin(), _e->end(), _o->testnestedflatbuffer.begin()); } } - { auto _e = testempty(); if (_e) _o->testempty = std::unique_ptr(_e->UnPack(_resolver)); } + { auto _e = test4(); if (_e) {_o->test4.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->test4[_i] = *_e->Get(_i); } } else if(!_merge) { _o->test4.resize(0); _o->test4.shrink_to_fit(); } } + { auto _e = testarrayofstring(); if (_e) {_o->testarrayofstring.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->testarrayofstring[_i] = _e->Get(_i)->str(); } } else if(!_merge) { _o->testarrayofstring.resize(0); _o->testarrayofstring.shrink_to_fit(); } } + { auto _e = testarrayoftables(); if (_e) {_o->testarrayoftables.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { if(_o->testarrayoftables[_i]) { _e->Get(_i)->UnPackTo(_o->testarrayoftables[_i].get(), _resolver, _merge); } else { _o->testarrayoftables[_i] = std::unique_ptr(_e->Get(_i)->UnPack(_resolver)); }; } } else if(!_merge) { _o->testarrayoftables.resize(0); _o->testarrayoftables.shrink_to_fit(); } } + { auto _e = enemy(); if (_e) { if(_o->enemy) { _e->UnPackTo(_o->enemy.get(), _resolver, _merge); } else { _o->enemy = std::unique_ptr(_e->UnPack(_resolver)); } } else if (!_merge && _o->enemy) {_o->enemy.reset(); } } + { auto _e = testnestedflatbuffer(); if (_e) {_o->testnestedflatbuffer.resize(_e->size()); std::copy(_e->begin(), _e->end(), _o->testnestedflatbuffer.begin()); } } + { auto _e = testempty(); if (_e) { if(_o->testempty) { _e->UnPackTo(_o->testempty.get(), _resolver, _merge); } else { _o->testempty = std::unique_ptr(_e->UnPack(_resolver)); } } else if (!_merge && _o->testempty) {_o->testempty.reset(); } } { auto _e = testbool(); _o->testbool = _e; } { auto _e = testhashs32_fnv1(); _o->testhashs32_fnv1 = _e; } { auto _e = testhashu32_fnv1(); _o->testhashu32_fnv1 = _e; } { auto _e = testhashs64_fnv1(); _o->testhashs64_fnv1 = _e; } { auto _e = testhashu64_fnv1(); _o->testhashu64_fnv1 = _e; } { auto _e = testhashs32_fnv1a(); _o->testhashs32_fnv1a = _e; } - { auto _e = testhashu32_fnv1a(); //scalar resolver, naked -if (_resolver) (*_resolver)(reinterpret_cast(&_o->testhashu32_fnv1a), static_cast(_e)); else _o->testhashu32_fnv1a = nullptr; } + { auto _e = testhashu32_fnv1a(); /*scalar resolver, naked*/ if (_resolver) (*_resolver)(reinterpret_cast(&_o->testhashu32_fnv1a), static_cast(_e)); else _o->testhashu32_fnv1a = nullptr; } { auto _e = testhashs64_fnv1a(); _o->testhashs64_fnv1a = _e; } { auto _e = testhashu64_fnv1a(); _o->testhashu64_fnv1a = _e; } - { auto _e = testarrayofbools(); if (_e) { _o->testarrayofbools.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->testarrayofbools[_i] = _e->Get(_i) != 0; } } } + { auto _e = testarrayofbools(); if (_e) {_o->testarrayofbools.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->testarrayofbools[_i] = _e->Get(_i) != 0; } } else if(!_merge) { _o->testarrayofbools.resize(0); _o->testarrayofbools.shrink_to_fit(); } } { auto _e = testf(); _o->testf = _e; } { auto _e = testf2(); _o->testf2 = _e; } { auto _e = testf3(); _o->testf3 = _e; } - { auto _e = testarrayofstring2(); if (_e) { _o->testarrayofstring2.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->testarrayofstring2[_i] = _e->Get(_i)->str(); } } } - { auto _e = testarrayofsortedstruct(); if (_e) { _o->testarrayofsortedstruct.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->testarrayofsortedstruct[_i] = *_e->Get(_i); } } } - { auto _e = flex(); if (_e) { _o->flex.resize(_e->size()); std::copy(_e->begin(), _e->end(), _o->flex.begin()); } } - { auto _e = test5(); if (_e) { _o->test5.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->test5[_i] = *_e->Get(_i); } } } - { auto _e = vector_of_longs(); if (_e) { _o->vector_of_longs.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->vector_of_longs[_i] = _e->Get(_i); } } } - { auto _e = vector_of_doubles(); if (_e) { _o->vector_of_doubles.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->vector_of_doubles[_i] = _e->Get(_i); } } } - { auto _e = parent_namespace_test(); if (_e) _o->parent_namespace_test = std::unique_ptr(_e->UnPack(_resolver)); } - { auto _e = vector_of_referrables(); if (_e) { _o->vector_of_referrables.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->vector_of_referrables[_i] = std::unique_ptr(_e->Get(_i)->UnPack(_resolver)); } } } - { auto _e = single_weak_reference(); //scalar resolver, naked -if (_resolver) (*_resolver)(reinterpret_cast(&_o->single_weak_reference), static_cast(_e)); else _o->single_weak_reference = nullptr; } - { auto _e = vector_of_weak_references(); if (_e) { _o->vector_of_weak_references.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { //vector resolver, naked -if (_resolver) (*_resolver)(reinterpret_cast(&_o->vector_of_weak_references[_i]), static_cast(_e->Get(_i))); else _o->vector_of_weak_references[_i] = nullptr; } } } - { auto _e = vector_of_strong_referrables(); if (_e) { _o->vector_of_strong_referrables.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->vector_of_strong_referrables[_i] = std::unique_ptr(_e->Get(_i)->UnPack(_resolver)); } } } - { auto _e = co_owning_reference(); //scalar resolver, naked -if (_resolver) (*_resolver)(reinterpret_cast(&_o->co_owning_reference), static_cast(_e)); else _o->co_owning_reference = nullptr; } - { auto _e = vector_of_co_owning_references(); if (_e) { _o->vector_of_co_owning_references.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { //vector resolver, default_ptr_type -if (_resolver) (*_resolver)(reinterpret_cast(&_o->vector_of_co_owning_references[_i]), static_cast(_e->Get(_i)));/* else do nothing */; } } } - { auto _e = non_owning_reference(); //scalar resolver, naked -if (_resolver) (*_resolver)(reinterpret_cast(&_o->non_owning_reference), static_cast(_e)); else _o->non_owning_reference = nullptr; } - { auto _e = vector_of_non_owning_references(); if (_e) { _o->vector_of_non_owning_references.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { //vector resolver, naked -if (_resolver) (*_resolver)(reinterpret_cast(&_o->vector_of_non_owning_references[_i]), static_cast(_e->Get(_i))); else _o->vector_of_non_owning_references[_i] = nullptr; } } } + { auto _e = testarrayofstring2(); if (_e) {_o->testarrayofstring2.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->testarrayofstring2[_i] = _e->Get(_i)->str(); } } else if(!_merge) { _o->testarrayofstring2.resize(0); _o->testarrayofstring2.shrink_to_fit(); } } + { auto _e = testarrayofsortedstruct(); if (_e) {_o->testarrayofsortedstruct.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->testarrayofsortedstruct[_i] = *_e->Get(_i); } } else if(!_merge) { _o->testarrayofsortedstruct.resize(0); _o->testarrayofsortedstruct.shrink_to_fit(); } } + { auto _e = flex(); if (_e) {_o->flex.resize(_e->size()); std::copy(_e->begin(), _e->end(), _o->flex.begin()); } } + { auto _e = test5(); if (_e) {_o->test5.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->test5[_i] = *_e->Get(_i); } } else if(!_merge) { _o->test5.resize(0); _o->test5.shrink_to_fit(); } } + { auto _e = vector_of_longs(); if (_e) {_o->vector_of_longs.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->vector_of_longs[_i] = _e->Get(_i); } } else if(!_merge) { _o->vector_of_longs.resize(0); _o->vector_of_longs.shrink_to_fit(); } } + { auto _e = vector_of_doubles(); if (_e) {_o->vector_of_doubles.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->vector_of_doubles[_i] = _e->Get(_i); } } else if(!_merge) { _o->vector_of_doubles.resize(0); _o->vector_of_doubles.shrink_to_fit(); } } + { auto _e = parent_namespace_test(); if (_e) { if(_o->parent_namespace_test) { _e->UnPackTo(_o->parent_namespace_test.get(), _resolver, _merge); } else { _o->parent_namespace_test = std::unique_ptr(_e->UnPack(_resolver)); } } else if (!_merge && _o->parent_namespace_test) {_o->parent_namespace_test.reset(); } } + { auto _e = vector_of_referrables(); if (_e) {_o->vector_of_referrables.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { if(_o->vector_of_referrables[_i]) { _e->Get(_i)->UnPackTo(_o->vector_of_referrables[_i].get(), _resolver, _merge); } else { _o->vector_of_referrables[_i] = std::unique_ptr(_e->Get(_i)->UnPack(_resolver)); }; } } else if(!_merge) { _o->vector_of_referrables.resize(0); _o->vector_of_referrables.shrink_to_fit(); } } + { auto _e = single_weak_reference(); /*scalar resolver, naked*/ if (_resolver) (*_resolver)(reinterpret_cast(&_o->single_weak_reference), static_cast(_e)); else _o->single_weak_reference = nullptr; } + { auto _e = vector_of_weak_references(); if (_e) {_o->vector_of_weak_references.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { /*vector resolver, naked*/ if (_resolver) (*_resolver)(reinterpret_cast(&_o->vector_of_weak_references[_i]), static_cast(_e->Get(_i))); else _o->vector_of_weak_references[_i] = nullptr; } } else if(!_merge) { _o->vector_of_weak_references.resize(0); _o->vector_of_weak_references.shrink_to_fit(); } } + { auto _e = vector_of_strong_referrables(); if (_e) {_o->vector_of_strong_referrables.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { if(_o->vector_of_strong_referrables[_i]) { _e->Get(_i)->UnPackTo(_o->vector_of_strong_referrables[_i].get(), _resolver, _merge); } else { _o->vector_of_strong_referrables[_i] = std::unique_ptr(_e->Get(_i)->UnPack(_resolver)); }; } } else if(!_merge) { _o->vector_of_strong_referrables.resize(0); _o->vector_of_strong_referrables.shrink_to_fit(); } } + { auto _e = co_owning_reference(); /*scalar resolver, naked*/ if (_resolver) (*_resolver)(reinterpret_cast(&_o->co_owning_reference), static_cast(_e)); else _o->co_owning_reference = nullptr; } + { auto _e = vector_of_co_owning_references(); if (_e) {_o->vector_of_co_owning_references.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { /*vector resolver, default_ptr_type*/ if (_resolver) (*_resolver)(reinterpret_cast(&_o->vector_of_co_owning_references[_i]), static_cast(_e->Get(_i)));/* else do nothing */; } } else if(!_merge) { _o->vector_of_co_owning_references.resize(0); _o->vector_of_co_owning_references.shrink_to_fit(); } } + { auto _e = non_owning_reference(); /*scalar resolver, naked*/ if (_resolver) (*_resolver)(reinterpret_cast(&_o->non_owning_reference), static_cast(_e)); else _o->non_owning_reference = nullptr; } + { auto _e = vector_of_non_owning_references(); if (_e) {_o->vector_of_non_owning_references.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { /*vector resolver, naked*/ if (_resolver) (*_resolver)(reinterpret_cast(&_o->vector_of_non_owning_references[_i]), static_cast(_e->Get(_i))); else _o->vector_of_non_owning_references[_i] = nullptr; } } else if(!_merge) { _o->vector_of_non_owning_references.resize(0); _o->vector_of_non_owning_references.shrink_to_fit(); } } { auto _e = any_unique_type(); _o->any_unique.type = _e; } { auto _e = any_unique(); if (_e) _o->any_unique.value = MyGame::Example::AnyUniqueAliasesUnion::UnPack(_e, any_unique_type(), _resolver); } { auto _e = any_ambiguous_type(); _o->any_ambiguous.type = _e; } { auto _e = any_ambiguous(); if (_e) _o->any_ambiguous.value = MyGame::Example::AnyAmbiguousAliasesUnion::UnPack(_e, any_ambiguous_type(), _resolver); } - { auto _e = vector_of_enums(); if (_e) { _o->vector_of_enums.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->vector_of_enums[_i] = static_cast(_e->Get(_i)); } } } + { auto _e = vector_of_enums(); if (_e) {_o->vector_of_enums.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->vector_of_enums[_i] = static_cast(_e->Get(_i)); } } else if(!_merge) { _o->vector_of_enums.resize(0); _o->vector_of_enums.shrink_to_fit(); } } { auto _e = signed_enum(); _o->signed_enum = _e; } - { auto _e = testrequirednestedflatbuffer(); if (_e) { _o->testrequirednestedflatbuffer.resize(_e->size()); std::copy(_e->begin(), _e->end(), _o->testrequirednestedflatbuffer.begin()); } } - { auto _e = scalar_key_sorted_tables(); if (_e) { _o->scalar_key_sorted_tables.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->scalar_key_sorted_tables[_i] = std::unique_ptr(_e->Get(_i)->UnPack(_resolver)); } } } + { auto _e = testrequirednestedflatbuffer(); if (_e) {_o->testrequirednestedflatbuffer.resize(_e->size()); std::copy(_e->begin(), _e->end(), _o->testrequirednestedflatbuffer.begin()); } } + { auto _e = scalar_key_sorted_tables(); if (_e) {_o->scalar_key_sorted_tables.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { if(_o->scalar_key_sorted_tables[_i]) { _e->Get(_i)->UnPackTo(_o->scalar_key_sorted_tables[_i].get(), _resolver, _merge); } else { _o->scalar_key_sorted_tables[_i] = std::unique_ptr(_e->Get(_i)->UnPack(_resolver)); }; } } else if(!_merge) { _o->scalar_key_sorted_tables.resize(0); _o->scalar_key_sorted_tables.shrink_to_fit(); } } { auto _e = native_inline(); if (_e) _o->native_inline = *_e; } { auto _e = long_enum_non_enum_default(); _o->long_enum_non_enum_default = _e; } { auto _e = long_enum_normal_default(); _o->long_enum_normal_default = _e; } @@ -3143,9 +3142,10 @@ inline TypeAliasesT *TypeAliases::UnPack(const flatbuffers::resolver_function_t return _o.release(); } -inline void TypeAliases::UnPackTo(TypeAliasesT *_o, const flatbuffers::resolver_function_t *_resolver) const { +inline void TypeAliases::UnPackTo(TypeAliasesT *_o, const flatbuffers::resolver_function_t *_resolver, bool _merge) const { (void)_o; (void)_resolver; + (void)_merge; { auto _e = i8(); _o->i8 = _e; } { auto _e = u8(); _o->u8 = _e; } { auto _e = i16(); _o->i16 = _e; } @@ -3156,8 +3156,8 @@ inline void TypeAliases::UnPackTo(TypeAliasesT *_o, const flatbuffers::resolver_ { auto _e = u64(); _o->u64 = _e; } { auto _e = f32(); _o->f32 = _e; } { auto _e = f64(); _o->f64 = _e; } - { auto _e = v8(); if (_e) { _o->v8.resize(_e->size()); std::copy(_e->begin(), _e->end(), _o->v8.begin()); } } - { auto _e = vf64(); if (_e) { _o->vf64.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->vf64[_i] = _e->Get(_i); } } } + { auto _e = v8(); if (_e) {_o->v8.resize(_e->size()); std::copy(_e->begin(), _e->end(), _o->v8.begin()); } } + { auto _e = vf64(); if (_e) {_o->vf64.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->vf64[_i] = _e->Get(_i); } } else if(!_merge) { _o->vf64.resize(0); _o->vf64.shrink_to_fit(); } } } inline flatbuffers::Offset TypeAliases::Pack(flatbuffers::FlatBufferBuilder &_fbb, const TypeAliasesT* _o, const flatbuffers::rehasher_function_t *_rehasher) { diff --git a/tests/cpp17/generated_cpp17/optional_scalars_generated.h b/tests/cpp17/generated_cpp17/optional_scalars_generated.h index b4b0625ba01..6f5bfdb43df 100644 --- a/tests/cpp17/generated_cpp17/optional_scalars_generated.h +++ b/tests/cpp17/generated_cpp17/optional_scalars_generated.h @@ -436,7 +436,7 @@ struct ScalarStuff FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { verifier.EndTable(); } ScalarStuffT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(ScalarStuffT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(ScalarStuffT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr, bool _merge = false) const; static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const ScalarStuffT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); }; @@ -697,9 +697,10 @@ inline ScalarStuffT *ScalarStuff::UnPack(const flatbuffers::resolver_function_t return _o.release(); } -inline void ScalarStuff::UnPackTo(ScalarStuffT *_o, const flatbuffers::resolver_function_t *_resolver) const { +inline void ScalarStuff::UnPackTo(ScalarStuffT *_o, const flatbuffers::resolver_function_t *_resolver, bool _merge) const { (void)_o; (void)_resolver; + (void)_merge; { auto _e = just_i8(); _o->just_i8 = _e; } { auto _e = maybe_i8(); _o->maybe_i8 = _e; } { auto _e = default_i8(); _o->default_i8 = _e; } diff --git a/tests/cpp17/generated_cpp17/union_vector_generated.h b/tests/cpp17/generated_cpp17/union_vector_generated.h index 5d5d8bfa050..008beae7163 100644 --- a/tests/cpp17/generated_cpp17/union_vector_generated.h +++ b/tests/cpp17/generated_cpp17/union_vector_generated.h @@ -424,7 +424,7 @@ struct Attacker FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { verifier.EndTable(); } AttackerT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(AttackerT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(AttackerT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr, bool _merge = false) const; static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const AttackerT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); }; @@ -501,7 +501,7 @@ struct HandFan FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { verifier.EndTable(); } HandFanT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(HandFanT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(HandFanT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr, bool _merge = false) const; static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const HandFanT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); }; @@ -625,7 +625,7 @@ struct Movie FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { verifier.EndTable(); } MovieT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(MovieT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(MovieT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr, bool _merge = false) const; static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const MovieT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); }; @@ -710,9 +710,10 @@ inline AttackerT *Attacker::UnPack(const flatbuffers::resolver_function_t *_reso return _o.release(); } -inline void Attacker::UnPackTo(AttackerT *_o, const flatbuffers::resolver_function_t *_resolver) const { +inline void Attacker::UnPackTo(AttackerT *_o, const flatbuffers::resolver_function_t *_resolver, bool _merge) const { (void)_o; (void)_resolver; + (void)_merge; { auto _e = sword_attack_damage(); _o->sword_attack_damage = _e; } } @@ -736,9 +737,10 @@ inline HandFanT *HandFan::UnPack(const flatbuffers::resolver_function_t *_resolv return _o.release(); } -inline void HandFan::UnPackTo(HandFanT *_o, const flatbuffers::resolver_function_t *_resolver) const { +inline void HandFan::UnPackTo(HandFanT *_o, const flatbuffers::resolver_function_t *_resolver, bool _merge) const { (void)_o; (void)_resolver; + (void)_merge; { auto _e = length(); _o->length = _e; } } @@ -762,13 +764,14 @@ inline MovieT *Movie::UnPack(const flatbuffers::resolver_function_t *_resolver) return _o.release(); } -inline void Movie::UnPackTo(MovieT *_o, const flatbuffers::resolver_function_t *_resolver) const { +inline void Movie::UnPackTo(MovieT *_o, const flatbuffers::resolver_function_t *_resolver, bool _merge) const { (void)_o; (void)_resolver; + (void)_merge; { auto _e = main_character_type(); _o->main_character.type = _e; } { auto _e = main_character(); if (_e) _o->main_character.value = CharacterUnion::UnPack(_e, main_character_type(), _resolver); } - { auto _e = characters_type(); if (_e) { _o->characters.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->characters[_i].type = static_cast(_e->Get(_i)); } } } - { auto _e = characters(); if (_e) { _o->characters.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->characters[_i].value = CharacterUnion::UnPack(_e->Get(_i), characters_type()->GetEnum(_i), _resolver); } } } + { auto _e = characters_type(); if (_e) {_o->characters.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->characters[_i].type = static_cast(_e->Get(_i)); } } else if(!_merge) { _o->characters.resize(0); _o->characters.shrink_to_fit(); } } + { auto _e = characters(); if (_e) {_o->characters.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->characters[_i].value = CharacterUnion::UnPack(_e->Get(_i), characters_type()->GetEnum(_i), _resolver); } } else if(!_merge) { _o->characters.resize(0); _o->characters.shrink_to_fit(); } } } inline flatbuffers::Offset Movie::Pack(flatbuffers::FlatBufferBuilder &_fbb, const MovieT* _o, const flatbuffers::rehasher_function_t *_rehasher) { diff --git a/tests/monster_extra_generated.h b/tests/monster_extra_generated.h index ec1d4011c45..e3013463b8d 100644 --- a/tests/monster_extra_generated.h +++ b/tests/monster_extra_generated.h @@ -133,7 +133,7 @@ struct MonsterExtra FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { verifier.EndTable(); } MonsterExtraT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(MonsterExtraT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(MonsterExtraT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr, bool _merge = false) const; static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const MonsterExtraT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); }; @@ -264,9 +264,10 @@ inline MonsterExtraT *MonsterExtra::UnPack(const flatbuffers::resolver_function_ return _o.release(); } -inline void MonsterExtra::UnPackTo(MonsterExtraT *_o, const flatbuffers::resolver_function_t *_resolver) const { +inline void MonsterExtra::UnPackTo(MonsterExtraT *_o, const flatbuffers::resolver_function_t *_resolver, bool _merge) const { (void)_o; (void)_resolver; + (void)_merge; { auto _e = d0(); _o->d0 = _e; } { auto _e = d1(); _o->d1 = _e; } { auto _e = d2(); _o->d2 = _e; } @@ -275,8 +276,8 @@ inline void MonsterExtra::UnPackTo(MonsterExtraT *_o, const flatbuffers::resolve { auto _e = f1(); _o->f1 = _e; } { auto _e = f2(); _o->f2 = _e; } { auto _e = f3(); _o->f3 = _e; } - { auto _e = dvec(); if (_e) { _o->dvec.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->dvec[_i] = _e->Get(_i); } } } - { auto _e = fvec(); if (_e) { _o->fvec.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->fvec[_i] = _e->Get(_i); } } } + { auto _e = dvec(); if (_e) {_o->dvec.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->dvec[_i] = _e->Get(_i); } } else if(!_merge) { _o->dvec.resize(0); _o->dvec.shrink_to_fit(); } } + { auto _e = fvec(); if (_e) {_o->fvec.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->fvec[_i] = _e->Get(_i); } } else if(!_merge) { _o->fvec.resize(0); _o->fvec.shrink_to_fit(); } } } inline flatbuffers::Offset MonsterExtra::Pack(flatbuffers::FlatBufferBuilder &_fbb, const MonsterExtraT* _o, const flatbuffers::rehasher_function_t *_rehasher) { diff --git a/tests/monster_test.cpp b/tests/monster_test.cpp index d5b12fa0de7..c8a71de90ed 100644 --- a/tests/monster_test.cpp +++ b/tests/monster_test.cpp @@ -6,9 +6,9 @@ #include "flatbuffers/idl.h" #include "flatbuffers/registry.h" #include "flatbuffers/verifier.h" +#include "is_quiet_nan.h" #include "monster_extra_generated.h" #include "monster_test_generated.h" -#include "is_quiet_nan.h" #include "test_assert.h" namespace flatbuffers { @@ -715,7 +715,7 @@ void TypeAliasesTest() { // example of parsing text straight into a buffer, and generating // text back from it: -void ParseAndGenerateTextTest(const std::string& tests_data_path, bool binary) { +void ParseAndGenerateTextTest(const std::string &tests_data_path, bool binary) { // load FlatBuffer schema (.fbs) and JSON from disk std::string schemafile; std::string jsonfile; @@ -810,5 +810,70 @@ void ParseAndGenerateTextTest(const std::string& tests_data_path, bool binary) { TEST_EQ_STR(jsongen_utf8.c_str(), jsonfile_utf8.c_str()); } +void UnPackTo(const uint8_t *flatbuf) { + // Get a monster that has a name and no enemy + auto orig_monster = GetMonster(flatbuf); + TEST_EQ_STR(orig_monster->name()->c_str(), "MyMonster"); + TEST_ASSERT(orig_monster->enemy() == nullptr); + + // Test UnPackTo without merging state + { + // Create an enemy + MonsterT enemy; + enemy.name = "Enemy"; + + // And create another monster owning the enemy, + MonsterT mon; + mon.name = "I'm monster 1"; + mon.enemy.reset(&enemy); + TEST_ASSERT(mon.enemy != nullptr); + + // Assert that all the Monster objects are correct. + TEST_EQ_STR(mon.name.c_str(), "I'm monster 1"); + TEST_EQ_STR(enemy.name.c_str(), "Enemy"); + TEST_EQ_STR(mon.enemy->name.c_str(), "Enemy"); + + // Now unpack monster ("MyMonster") into monster + orig_monster->UnPackTo(&mon); + + // Monster name should be from monster + TEST_EQ_STR(mon.name.c_str(), "MyMonster"); + + // The monster shouldn't have any enemies, because monster didn't. + TEST_ASSERT(mon.enemy == nullptr); + } + + //Test UnPackTo with merging state + { + // Create an enemy + MonsterT enemy; + enemy.name = "Enemy"; + + // And create another monster owning the enemy, + MonsterT mon; + mon.name = "I'm monster 1"; + mon.enemy.reset(&enemy); + TEST_ASSERT(mon.enemy != nullptr); + + // Assert that all the Monster objects are correct. + TEST_EQ_STR(mon.name.c_str(), "I'm monster 1"); + TEST_EQ_STR(enemy.name.c_str(), "Enemy"); + TEST_EQ_STR(mon.enemy->name.c_str(), "Enemy"); + + // Now unpack monster ("MyMonster") into monster, indicating to merge state. + orig_monster->UnPackTo(&mon, nullptr, /*_merge=*/true); + + // Monster name should be from monster + TEST_EQ_STR(mon.name.c_str(), "MyMonster"); + + // Enemy should still have its own name. + TEST_EQ_STR(enemy.name.c_str(), "Enemy"); + + // The monster should continue to have its original enemy monster, because + // the states were merged. + TEST_EQ_STR(mon.enemy->name.c_str(), "Enemy"); + } +} + } // namespace tests } // namespace flatbuffers \ No newline at end of file diff --git a/tests/monster_test.h b/tests/monster_test.h index a0b424cd7dd..5ab968bb5b8 100644 --- a/tests/monster_test.h +++ b/tests/monster_test.h @@ -30,6 +30,8 @@ void TypeAliasesTest(); void ParseAndGenerateTextTest(const std::string& tests_data_path, bool binary); +void UnPackTo(const uint8_t *flatbuf); + } // namespace tests } // namespace flatbuffers diff --git a/tests/monster_test_generated.h b/tests/monster_test_generated.h index f170e60230c..3c84d2c1181 100644 --- a/tests/monster_test_generated.h +++ b/tests/monster_test_generated.h @@ -954,7 +954,7 @@ struct InParentNamespace FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { verifier.EndTable(); } InParentNamespaceT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(InParentNamespaceT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(InParentNamespaceT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr, bool _merge = false) const; static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const InParentNamespaceT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); }; @@ -998,7 +998,7 @@ struct Monster FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { verifier.EndTable(); } MonsterT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(MonsterT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(MonsterT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr, bool _merge = false) const; static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const MonsterT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); }; @@ -1055,7 +1055,7 @@ struct TestSimpleTableWithEnum FLATBUFFERS_FINAL_CLASS : private flatbuffers::Ta verifier.EndTable(); } TestSimpleTableWithEnumT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(TestSimpleTableWithEnumT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(TestSimpleTableWithEnumT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr, bool _merge = false) const; static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const TestSimpleTableWithEnumT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); }; @@ -1138,7 +1138,7 @@ struct Stat FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { verifier.EndTable(); } StatT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(StatT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(StatT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr, bool _merge = false) const; static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const StatT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); }; @@ -1225,7 +1225,7 @@ struct Referrable FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { verifier.EndTable(); } ReferrableT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(ReferrableT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(ReferrableT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr, bool _merge = false) const; static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const ReferrableT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); }; @@ -1826,7 +1826,7 @@ struct Monster FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { verifier.EndTable(); } MonsterT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(MonsterT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(MonsterT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr, bool _merge = false) const; static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const MonsterT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); }; @@ -2403,7 +2403,7 @@ struct TypeAliases FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { verifier.EndTable(); } TypeAliasesT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(TypeAliasesT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(TypeAliasesT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr, bool _merge = false) const; static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const TypeAliasesT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); }; @@ -2540,9 +2540,10 @@ inline InParentNamespaceT *InParentNamespace::UnPack(const flatbuffers::resolver return _o.release(); } -inline void InParentNamespace::UnPackTo(InParentNamespaceT *_o, const flatbuffers::resolver_function_t *_resolver) const { +inline void InParentNamespace::UnPackTo(InParentNamespaceT *_o, const flatbuffers::resolver_function_t *_resolver, bool _merge) const { (void)_o; (void)_resolver; + (void)_merge; } inline flatbuffers::Offset InParentNamespace::Pack(flatbuffers::FlatBufferBuilder &_fbb, const InParentNamespaceT* _o, const flatbuffers::rehasher_function_t *_rehasher) { @@ -2575,9 +2576,10 @@ inline MonsterT *Monster::UnPack(const flatbuffers::resolver_function_t *_resolv return _o.release(); } -inline void Monster::UnPackTo(MonsterT *_o, const flatbuffers::resolver_function_t *_resolver) const { +inline void Monster::UnPackTo(MonsterT *_o, const flatbuffers::resolver_function_t *_resolver, bool _merge) const { (void)_o; (void)_resolver; + (void)_merge; } inline flatbuffers::Offset Monster::Pack(flatbuffers::FlatBufferBuilder &_fbb, const MonsterT* _o, const flatbuffers::rehasher_function_t *_rehasher) { @@ -2613,9 +2615,10 @@ inline TestSimpleTableWithEnumT *TestSimpleTableWithEnum::UnPack(const flatbuffe return _o.release(); } -inline void TestSimpleTableWithEnum::UnPackTo(TestSimpleTableWithEnumT *_o, const flatbuffers::resolver_function_t *_resolver) const { +inline void TestSimpleTableWithEnum::UnPackTo(TestSimpleTableWithEnumT *_o, const flatbuffers::resolver_function_t *_resolver, bool _merge) const { (void)_o; (void)_resolver; + (void)_merge; { auto _e = color(); _o->color = _e; } } @@ -2652,9 +2655,10 @@ inline StatT *Stat::UnPack(const flatbuffers::resolver_function_t *_resolver) co return _o.release(); } -inline void Stat::UnPackTo(StatT *_o, const flatbuffers::resolver_function_t *_resolver) const { +inline void Stat::UnPackTo(StatT *_o, const flatbuffers::resolver_function_t *_resolver, bool _merge) const { (void)_o; (void)_resolver; + (void)_merge; { auto _e = id(); if (_e) _o->id = _e->str(); } { auto _e = val(); _o->val = _e; } { auto _e = count(); _o->count = _e; } @@ -2695,9 +2699,10 @@ inline ReferrableT *Referrable::UnPack(const flatbuffers::resolver_function_t *_ return _o.release(); } -inline void Referrable::UnPackTo(ReferrableT *_o, const flatbuffers::resolver_function_t *_resolver) const { +inline void Referrable::UnPackTo(ReferrableT *_o, const flatbuffers::resolver_function_t *_resolver, bool _merge) const { (void)_o; (void)_resolver; + (void)_merge; { auto _e = id(); _o->id = _e; } } @@ -2893,66 +2898,60 @@ inline MonsterT *Monster::UnPack(const flatbuffers::resolver_function_t *_resolv return _o.release(); } -inline void Monster::UnPackTo(MonsterT *_o, const flatbuffers::resolver_function_t *_resolver) const { +inline void Monster::UnPackTo(MonsterT *_o, const flatbuffers::resolver_function_t *_resolver, bool _merge) const { (void)_o; (void)_resolver; + (void)_merge; { auto _e = pos(); if (_e) _o->pos = flatbuffers::unique_ptr(new MyGame::Example::Vec3(*_e)); } { auto _e = mana(); _o->mana = _e; } { auto _e = hp(); _o->hp = _e; } { auto _e = name(); if (_e) _o->name = _e->str(); } - { auto _e = inventory(); if (_e) { _o->inventory.resize(_e->size()); std::copy(_e->begin(), _e->end(), _o->inventory.begin()); } } + { auto _e = inventory(); if (_e) {_o->inventory.resize(_e->size()); std::copy(_e->begin(), _e->end(), _o->inventory.begin()); } } { auto _e = color(); _o->color = _e; } { auto _e = test_type(); _o->test.type = _e; } { auto _e = test(); if (_e) _o->test.value = MyGame::Example::AnyUnion::UnPack(_e, test_type(), _resolver); } - { auto _e = test4(); if (_e) { _o->test4.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->test4[_i] = *_e->Get(_i); } } } - { auto _e = testarrayofstring(); if (_e) { _o->testarrayofstring.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->testarrayofstring[_i] = _e->Get(_i)->str(); } } } - { auto _e = testarrayoftables(); if (_e) { _o->testarrayoftables.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->testarrayoftables[_i] = flatbuffers::unique_ptr(_e->Get(_i)->UnPack(_resolver)); } } } - { auto _e = enemy(); if (_e) _o->enemy = flatbuffers::unique_ptr(_e->UnPack(_resolver)); } - { auto _e = testnestedflatbuffer(); if (_e) { _o->testnestedflatbuffer.resize(_e->size()); std::copy(_e->begin(), _e->end(), _o->testnestedflatbuffer.begin()); } } - { auto _e = testempty(); if (_e) _o->testempty = flatbuffers::unique_ptr(_e->UnPack(_resolver)); } + { auto _e = test4(); if (_e) {_o->test4.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->test4[_i] = *_e->Get(_i); } } else if(!_merge) { _o->test4.resize(0); _o->test4.shrink_to_fit(); } } + { auto _e = testarrayofstring(); if (_e) {_o->testarrayofstring.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->testarrayofstring[_i] = _e->Get(_i)->str(); } } else if(!_merge) { _o->testarrayofstring.resize(0); _o->testarrayofstring.shrink_to_fit(); } } + { auto _e = testarrayoftables(); if (_e) {_o->testarrayoftables.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { if(_o->testarrayoftables[_i]) { _e->Get(_i)->UnPackTo(_o->testarrayoftables[_i].get(), _resolver, _merge); } else { _o->testarrayoftables[_i] = flatbuffers::unique_ptr(_e->Get(_i)->UnPack(_resolver)); }; } } else if(!_merge) { _o->testarrayoftables.resize(0); _o->testarrayoftables.shrink_to_fit(); } } + { auto _e = enemy(); if (_e) { if(_o->enemy) { _e->UnPackTo(_o->enemy.get(), _resolver, _merge); } else { _o->enemy = flatbuffers::unique_ptr(_e->UnPack(_resolver)); } } else if (!_merge && _o->enemy) {_o->enemy.reset(); } } + { auto _e = testnestedflatbuffer(); if (_e) {_o->testnestedflatbuffer.resize(_e->size()); std::copy(_e->begin(), _e->end(), _o->testnestedflatbuffer.begin()); } } + { auto _e = testempty(); if (_e) { if(_o->testempty) { _e->UnPackTo(_o->testempty.get(), _resolver, _merge); } else { _o->testempty = flatbuffers::unique_ptr(_e->UnPack(_resolver)); } } else if (!_merge && _o->testempty) {_o->testempty.reset(); } } { auto _e = testbool(); _o->testbool = _e; } { auto _e = testhashs32_fnv1(); _o->testhashs32_fnv1 = _e; } { auto _e = testhashu32_fnv1(); _o->testhashu32_fnv1 = _e; } { auto _e = testhashs64_fnv1(); _o->testhashs64_fnv1 = _e; } { auto _e = testhashu64_fnv1(); _o->testhashu64_fnv1 = _e; } { auto _e = testhashs32_fnv1a(); _o->testhashs32_fnv1a = _e; } - { auto _e = testhashu32_fnv1a(); //scalar resolver, naked -if (_resolver) (*_resolver)(reinterpret_cast(&_o->testhashu32_fnv1a), static_cast(_e)); else _o->testhashu32_fnv1a = nullptr; } + { auto _e = testhashu32_fnv1a(); /*scalar resolver, naked*/ if (_resolver) (*_resolver)(reinterpret_cast(&_o->testhashu32_fnv1a), static_cast(_e)); else _o->testhashu32_fnv1a = nullptr; } { auto _e = testhashs64_fnv1a(); _o->testhashs64_fnv1a = _e; } { auto _e = testhashu64_fnv1a(); _o->testhashu64_fnv1a = _e; } - { auto _e = testarrayofbools(); if (_e) { _o->testarrayofbools.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->testarrayofbools[_i] = _e->Get(_i) != 0; } } } + { auto _e = testarrayofbools(); if (_e) {_o->testarrayofbools.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->testarrayofbools[_i] = _e->Get(_i) != 0; } } else if(!_merge) { _o->testarrayofbools.resize(0); _o->testarrayofbools.shrink_to_fit(); } } { auto _e = testf(); _o->testf = _e; } { auto _e = testf2(); _o->testf2 = _e; } { auto _e = testf3(); _o->testf3 = _e; } - { auto _e = testarrayofstring2(); if (_e) { _o->testarrayofstring2.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->testarrayofstring2[_i] = _e->Get(_i)->str(); } } } - { auto _e = testarrayofsortedstruct(); if (_e) { _o->testarrayofsortedstruct.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->testarrayofsortedstruct[_i] = *_e->Get(_i); } } } - { auto _e = flex(); if (_e) { _o->flex.resize(_e->size()); std::copy(_e->begin(), _e->end(), _o->flex.begin()); } } - { auto _e = test5(); if (_e) { _o->test5.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->test5[_i] = *_e->Get(_i); } } } - { auto _e = vector_of_longs(); if (_e) { _o->vector_of_longs.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->vector_of_longs[_i] = _e->Get(_i); } } } - { auto _e = vector_of_doubles(); if (_e) { _o->vector_of_doubles.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->vector_of_doubles[_i] = _e->Get(_i); } } } - { auto _e = parent_namespace_test(); if (_e) _o->parent_namespace_test = flatbuffers::unique_ptr(_e->UnPack(_resolver)); } - { auto _e = vector_of_referrables(); if (_e) { _o->vector_of_referrables.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->vector_of_referrables[_i] = flatbuffers::unique_ptr(_e->Get(_i)->UnPack(_resolver)); } } } - { auto _e = single_weak_reference(); //scalar resolver, naked -if (_resolver) (*_resolver)(reinterpret_cast(&_o->single_weak_reference), static_cast(_e)); else _o->single_weak_reference = nullptr; } - { auto _e = vector_of_weak_references(); if (_e) { _o->vector_of_weak_references.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { //vector resolver, naked -if (_resolver) (*_resolver)(reinterpret_cast(&_o->vector_of_weak_references[_i]), static_cast(_e->Get(_i))); else _o->vector_of_weak_references[_i] = nullptr; } } } - { auto _e = vector_of_strong_referrables(); if (_e) { _o->vector_of_strong_referrables.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->vector_of_strong_referrables[_i] = flatbuffers::unique_ptr(_e->Get(_i)->UnPack(_resolver)); } } } - { auto _e = co_owning_reference(); //scalar resolver, naked -if (_resolver) (*_resolver)(reinterpret_cast(&_o->co_owning_reference), static_cast(_e)); else _o->co_owning_reference = nullptr; } - { auto _e = vector_of_co_owning_references(); if (_e) { _o->vector_of_co_owning_references.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { //vector resolver, default_ptr_type -if (_resolver) (*_resolver)(reinterpret_cast(&_o->vector_of_co_owning_references[_i]), static_cast(_e->Get(_i)));/* else do nothing */; } } } - { auto _e = non_owning_reference(); //scalar resolver, naked -if (_resolver) (*_resolver)(reinterpret_cast(&_o->non_owning_reference), static_cast(_e)); else _o->non_owning_reference = nullptr; } - { auto _e = vector_of_non_owning_references(); if (_e) { _o->vector_of_non_owning_references.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { //vector resolver, naked -if (_resolver) (*_resolver)(reinterpret_cast(&_o->vector_of_non_owning_references[_i]), static_cast(_e->Get(_i))); else _o->vector_of_non_owning_references[_i] = nullptr; } } } + { auto _e = testarrayofstring2(); if (_e) {_o->testarrayofstring2.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->testarrayofstring2[_i] = _e->Get(_i)->str(); } } else if(!_merge) { _o->testarrayofstring2.resize(0); _o->testarrayofstring2.shrink_to_fit(); } } + { auto _e = testarrayofsortedstruct(); if (_e) {_o->testarrayofsortedstruct.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->testarrayofsortedstruct[_i] = *_e->Get(_i); } } else if(!_merge) { _o->testarrayofsortedstruct.resize(0); _o->testarrayofsortedstruct.shrink_to_fit(); } } + { auto _e = flex(); if (_e) {_o->flex.resize(_e->size()); std::copy(_e->begin(), _e->end(), _o->flex.begin()); } } + { auto _e = test5(); if (_e) {_o->test5.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->test5[_i] = *_e->Get(_i); } } else if(!_merge) { _o->test5.resize(0); _o->test5.shrink_to_fit(); } } + { auto _e = vector_of_longs(); if (_e) {_o->vector_of_longs.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->vector_of_longs[_i] = _e->Get(_i); } } else if(!_merge) { _o->vector_of_longs.resize(0); _o->vector_of_longs.shrink_to_fit(); } } + { auto _e = vector_of_doubles(); if (_e) {_o->vector_of_doubles.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->vector_of_doubles[_i] = _e->Get(_i); } } else if(!_merge) { _o->vector_of_doubles.resize(0); _o->vector_of_doubles.shrink_to_fit(); } } + { auto _e = parent_namespace_test(); if (_e) { if(_o->parent_namespace_test) { _e->UnPackTo(_o->parent_namespace_test.get(), _resolver, _merge); } else { _o->parent_namespace_test = flatbuffers::unique_ptr(_e->UnPack(_resolver)); } } else if (!_merge && _o->parent_namespace_test) {_o->parent_namespace_test.reset(); } } + { auto _e = vector_of_referrables(); if (_e) {_o->vector_of_referrables.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { if(_o->vector_of_referrables[_i]) { _e->Get(_i)->UnPackTo(_o->vector_of_referrables[_i].get(), _resolver, _merge); } else { _o->vector_of_referrables[_i] = flatbuffers::unique_ptr(_e->Get(_i)->UnPack(_resolver)); }; } } else if(!_merge) { _o->vector_of_referrables.resize(0); _o->vector_of_referrables.shrink_to_fit(); } } + { auto _e = single_weak_reference(); /*scalar resolver, naked*/ if (_resolver) (*_resolver)(reinterpret_cast(&_o->single_weak_reference), static_cast(_e)); else _o->single_weak_reference = nullptr; } + { auto _e = vector_of_weak_references(); if (_e) {_o->vector_of_weak_references.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { /*vector resolver, naked*/ if (_resolver) (*_resolver)(reinterpret_cast(&_o->vector_of_weak_references[_i]), static_cast(_e->Get(_i))); else _o->vector_of_weak_references[_i] = nullptr; } } else if(!_merge) { _o->vector_of_weak_references.resize(0); _o->vector_of_weak_references.shrink_to_fit(); } } + { auto _e = vector_of_strong_referrables(); if (_e) {_o->vector_of_strong_referrables.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { if(_o->vector_of_strong_referrables[_i]) { _e->Get(_i)->UnPackTo(_o->vector_of_strong_referrables[_i].get(), _resolver, _merge); } else { _o->vector_of_strong_referrables[_i] = flatbuffers::unique_ptr(_e->Get(_i)->UnPack(_resolver)); }; } } else if(!_merge) { _o->vector_of_strong_referrables.resize(0); _o->vector_of_strong_referrables.shrink_to_fit(); } } + { auto _e = co_owning_reference(); /*scalar resolver, naked*/ if (_resolver) (*_resolver)(reinterpret_cast(&_o->co_owning_reference), static_cast(_e)); else _o->co_owning_reference = nullptr; } + { auto _e = vector_of_co_owning_references(); if (_e) {_o->vector_of_co_owning_references.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { /*vector resolver, default_ptr_type*/ if (_resolver) (*_resolver)(reinterpret_cast(&_o->vector_of_co_owning_references[_i]), static_cast(_e->Get(_i)));/* else do nothing */; } } else if(!_merge) { _o->vector_of_co_owning_references.resize(0); _o->vector_of_co_owning_references.shrink_to_fit(); } } + { auto _e = non_owning_reference(); /*scalar resolver, naked*/ if (_resolver) (*_resolver)(reinterpret_cast(&_o->non_owning_reference), static_cast(_e)); else _o->non_owning_reference = nullptr; } + { auto _e = vector_of_non_owning_references(); if (_e) {_o->vector_of_non_owning_references.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { /*vector resolver, naked*/ if (_resolver) (*_resolver)(reinterpret_cast(&_o->vector_of_non_owning_references[_i]), static_cast(_e->Get(_i))); else _o->vector_of_non_owning_references[_i] = nullptr; } } else if(!_merge) { _o->vector_of_non_owning_references.resize(0); _o->vector_of_non_owning_references.shrink_to_fit(); } } { auto _e = any_unique_type(); _o->any_unique.type = _e; } { auto _e = any_unique(); if (_e) _o->any_unique.value = MyGame::Example::AnyUniqueAliasesUnion::UnPack(_e, any_unique_type(), _resolver); } { auto _e = any_ambiguous_type(); _o->any_ambiguous.type = _e; } { auto _e = any_ambiguous(); if (_e) _o->any_ambiguous.value = MyGame::Example::AnyAmbiguousAliasesUnion::UnPack(_e, any_ambiguous_type(), _resolver); } - { auto _e = vector_of_enums(); if (_e) { _o->vector_of_enums.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->vector_of_enums[_i] = static_cast(_e->Get(_i)); } } } + { auto _e = vector_of_enums(); if (_e) {_o->vector_of_enums.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->vector_of_enums[_i] = static_cast(_e->Get(_i)); } } else if(!_merge) { _o->vector_of_enums.resize(0); _o->vector_of_enums.shrink_to_fit(); } } { auto _e = signed_enum(); _o->signed_enum = _e; } - { auto _e = testrequirednestedflatbuffer(); if (_e) { _o->testrequirednestedflatbuffer.resize(_e->size()); std::copy(_e->begin(), _e->end(), _o->testrequirednestedflatbuffer.begin()); } } - { auto _e = scalar_key_sorted_tables(); if (_e) { _o->scalar_key_sorted_tables.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->scalar_key_sorted_tables[_i] = flatbuffers::unique_ptr(_e->Get(_i)->UnPack(_resolver)); } } } + { auto _e = testrequirednestedflatbuffer(); if (_e) {_o->testrequirednestedflatbuffer.resize(_e->size()); std::copy(_e->begin(), _e->end(), _o->testrequirednestedflatbuffer.begin()); } } + { auto _e = scalar_key_sorted_tables(); if (_e) {_o->scalar_key_sorted_tables.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { if(_o->scalar_key_sorted_tables[_i]) { _e->Get(_i)->UnPackTo(_o->scalar_key_sorted_tables[_i].get(), _resolver, _merge); } else { _o->scalar_key_sorted_tables[_i] = flatbuffers::unique_ptr(_e->Get(_i)->UnPack(_resolver)); }; } } else if(!_merge) { _o->scalar_key_sorted_tables.resize(0); _o->scalar_key_sorted_tables.shrink_to_fit(); } } { auto _e = native_inline(); if (_e) _o->native_inline = *_e; } { auto _e = long_enum_non_enum_default(); _o->long_enum_non_enum_default = _e; } { auto _e = long_enum_normal_default(); _o->long_enum_normal_default = _e; } @@ -3104,9 +3103,10 @@ inline TypeAliasesT *TypeAliases::UnPack(const flatbuffers::resolver_function_t return _o.release(); } -inline void TypeAliases::UnPackTo(TypeAliasesT *_o, const flatbuffers::resolver_function_t *_resolver) const { +inline void TypeAliases::UnPackTo(TypeAliasesT *_o, const flatbuffers::resolver_function_t *_resolver, bool _merge) const { (void)_o; (void)_resolver; + (void)_merge; { auto _e = i8(); _o->i8 = _e; } { auto _e = u8(); _o->u8 = _e; } { auto _e = i16(); _o->i16 = _e; } @@ -3117,8 +3117,8 @@ inline void TypeAliases::UnPackTo(TypeAliasesT *_o, const flatbuffers::resolver_ { auto _e = u64(); _o->u64 = _e; } { auto _e = f32(); _o->f32 = _e; } { auto _e = f64(); _o->f64 = _e; } - { auto _e = v8(); if (_e) { _o->v8.resize(_e->size()); std::copy(_e->begin(), _e->end(), _o->v8.begin()); } } - { auto _e = vf64(); if (_e) { _o->vf64.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->vf64[_i] = _e->Get(_i); } } } + { auto _e = v8(); if (_e) {_o->v8.resize(_e->size()); std::copy(_e->begin(), _e->end(), _o->v8.begin()); } } + { auto _e = vf64(); if (_e) {_o->vf64.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->vf64[_i] = _e->Get(_i); } } else if(!_merge) { _o->vf64.resize(0); _o->vf64.shrink_to_fit(); } } } inline flatbuffers::Offset TypeAliases::Pack(flatbuffers::FlatBufferBuilder &_fbb, const TypeAliasesT* _o, const flatbuffers::rehasher_function_t *_rehasher) { diff --git a/tests/monster_test_suffix/ext_only/monster_test_generated.hpp b/tests/monster_test_suffix/ext_only/monster_test_generated.hpp index f170e60230c..3c84d2c1181 100644 --- a/tests/monster_test_suffix/ext_only/monster_test_generated.hpp +++ b/tests/monster_test_suffix/ext_only/monster_test_generated.hpp @@ -954,7 +954,7 @@ struct InParentNamespace FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { verifier.EndTable(); } InParentNamespaceT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(InParentNamespaceT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(InParentNamespaceT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr, bool _merge = false) const; static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const InParentNamespaceT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); }; @@ -998,7 +998,7 @@ struct Monster FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { verifier.EndTable(); } MonsterT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(MonsterT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(MonsterT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr, bool _merge = false) const; static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const MonsterT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); }; @@ -1055,7 +1055,7 @@ struct TestSimpleTableWithEnum FLATBUFFERS_FINAL_CLASS : private flatbuffers::Ta verifier.EndTable(); } TestSimpleTableWithEnumT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(TestSimpleTableWithEnumT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(TestSimpleTableWithEnumT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr, bool _merge = false) const; static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const TestSimpleTableWithEnumT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); }; @@ -1138,7 +1138,7 @@ struct Stat FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { verifier.EndTable(); } StatT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(StatT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(StatT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr, bool _merge = false) const; static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const StatT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); }; @@ -1225,7 +1225,7 @@ struct Referrable FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { verifier.EndTable(); } ReferrableT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(ReferrableT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(ReferrableT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr, bool _merge = false) const; static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const ReferrableT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); }; @@ -1826,7 +1826,7 @@ struct Monster FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { verifier.EndTable(); } MonsterT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(MonsterT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(MonsterT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr, bool _merge = false) const; static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const MonsterT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); }; @@ -2403,7 +2403,7 @@ struct TypeAliases FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { verifier.EndTable(); } TypeAliasesT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(TypeAliasesT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(TypeAliasesT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr, bool _merge = false) const; static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const TypeAliasesT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); }; @@ -2540,9 +2540,10 @@ inline InParentNamespaceT *InParentNamespace::UnPack(const flatbuffers::resolver return _o.release(); } -inline void InParentNamespace::UnPackTo(InParentNamespaceT *_o, const flatbuffers::resolver_function_t *_resolver) const { +inline void InParentNamespace::UnPackTo(InParentNamespaceT *_o, const flatbuffers::resolver_function_t *_resolver, bool _merge) const { (void)_o; (void)_resolver; + (void)_merge; } inline flatbuffers::Offset InParentNamespace::Pack(flatbuffers::FlatBufferBuilder &_fbb, const InParentNamespaceT* _o, const flatbuffers::rehasher_function_t *_rehasher) { @@ -2575,9 +2576,10 @@ inline MonsterT *Monster::UnPack(const flatbuffers::resolver_function_t *_resolv return _o.release(); } -inline void Monster::UnPackTo(MonsterT *_o, const flatbuffers::resolver_function_t *_resolver) const { +inline void Monster::UnPackTo(MonsterT *_o, const flatbuffers::resolver_function_t *_resolver, bool _merge) const { (void)_o; (void)_resolver; + (void)_merge; } inline flatbuffers::Offset Monster::Pack(flatbuffers::FlatBufferBuilder &_fbb, const MonsterT* _o, const flatbuffers::rehasher_function_t *_rehasher) { @@ -2613,9 +2615,10 @@ inline TestSimpleTableWithEnumT *TestSimpleTableWithEnum::UnPack(const flatbuffe return _o.release(); } -inline void TestSimpleTableWithEnum::UnPackTo(TestSimpleTableWithEnumT *_o, const flatbuffers::resolver_function_t *_resolver) const { +inline void TestSimpleTableWithEnum::UnPackTo(TestSimpleTableWithEnumT *_o, const flatbuffers::resolver_function_t *_resolver, bool _merge) const { (void)_o; (void)_resolver; + (void)_merge; { auto _e = color(); _o->color = _e; } } @@ -2652,9 +2655,10 @@ inline StatT *Stat::UnPack(const flatbuffers::resolver_function_t *_resolver) co return _o.release(); } -inline void Stat::UnPackTo(StatT *_o, const flatbuffers::resolver_function_t *_resolver) const { +inline void Stat::UnPackTo(StatT *_o, const flatbuffers::resolver_function_t *_resolver, bool _merge) const { (void)_o; (void)_resolver; + (void)_merge; { auto _e = id(); if (_e) _o->id = _e->str(); } { auto _e = val(); _o->val = _e; } { auto _e = count(); _o->count = _e; } @@ -2695,9 +2699,10 @@ inline ReferrableT *Referrable::UnPack(const flatbuffers::resolver_function_t *_ return _o.release(); } -inline void Referrable::UnPackTo(ReferrableT *_o, const flatbuffers::resolver_function_t *_resolver) const { +inline void Referrable::UnPackTo(ReferrableT *_o, const flatbuffers::resolver_function_t *_resolver, bool _merge) const { (void)_o; (void)_resolver; + (void)_merge; { auto _e = id(); _o->id = _e; } } @@ -2893,66 +2898,60 @@ inline MonsterT *Monster::UnPack(const flatbuffers::resolver_function_t *_resolv return _o.release(); } -inline void Monster::UnPackTo(MonsterT *_o, const flatbuffers::resolver_function_t *_resolver) const { +inline void Monster::UnPackTo(MonsterT *_o, const flatbuffers::resolver_function_t *_resolver, bool _merge) const { (void)_o; (void)_resolver; + (void)_merge; { auto _e = pos(); if (_e) _o->pos = flatbuffers::unique_ptr(new MyGame::Example::Vec3(*_e)); } { auto _e = mana(); _o->mana = _e; } { auto _e = hp(); _o->hp = _e; } { auto _e = name(); if (_e) _o->name = _e->str(); } - { auto _e = inventory(); if (_e) { _o->inventory.resize(_e->size()); std::copy(_e->begin(), _e->end(), _o->inventory.begin()); } } + { auto _e = inventory(); if (_e) {_o->inventory.resize(_e->size()); std::copy(_e->begin(), _e->end(), _o->inventory.begin()); } } { auto _e = color(); _o->color = _e; } { auto _e = test_type(); _o->test.type = _e; } { auto _e = test(); if (_e) _o->test.value = MyGame::Example::AnyUnion::UnPack(_e, test_type(), _resolver); } - { auto _e = test4(); if (_e) { _o->test4.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->test4[_i] = *_e->Get(_i); } } } - { auto _e = testarrayofstring(); if (_e) { _o->testarrayofstring.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->testarrayofstring[_i] = _e->Get(_i)->str(); } } } - { auto _e = testarrayoftables(); if (_e) { _o->testarrayoftables.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->testarrayoftables[_i] = flatbuffers::unique_ptr(_e->Get(_i)->UnPack(_resolver)); } } } - { auto _e = enemy(); if (_e) _o->enemy = flatbuffers::unique_ptr(_e->UnPack(_resolver)); } - { auto _e = testnestedflatbuffer(); if (_e) { _o->testnestedflatbuffer.resize(_e->size()); std::copy(_e->begin(), _e->end(), _o->testnestedflatbuffer.begin()); } } - { auto _e = testempty(); if (_e) _o->testempty = flatbuffers::unique_ptr(_e->UnPack(_resolver)); } + { auto _e = test4(); if (_e) {_o->test4.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->test4[_i] = *_e->Get(_i); } } else if(!_merge) { _o->test4.resize(0); _o->test4.shrink_to_fit(); } } + { auto _e = testarrayofstring(); if (_e) {_o->testarrayofstring.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->testarrayofstring[_i] = _e->Get(_i)->str(); } } else if(!_merge) { _o->testarrayofstring.resize(0); _o->testarrayofstring.shrink_to_fit(); } } + { auto _e = testarrayoftables(); if (_e) {_o->testarrayoftables.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { if(_o->testarrayoftables[_i]) { _e->Get(_i)->UnPackTo(_o->testarrayoftables[_i].get(), _resolver, _merge); } else { _o->testarrayoftables[_i] = flatbuffers::unique_ptr(_e->Get(_i)->UnPack(_resolver)); }; } } else if(!_merge) { _o->testarrayoftables.resize(0); _o->testarrayoftables.shrink_to_fit(); } } + { auto _e = enemy(); if (_e) { if(_o->enemy) { _e->UnPackTo(_o->enemy.get(), _resolver, _merge); } else { _o->enemy = flatbuffers::unique_ptr(_e->UnPack(_resolver)); } } else if (!_merge && _o->enemy) {_o->enemy.reset(); } } + { auto _e = testnestedflatbuffer(); if (_e) {_o->testnestedflatbuffer.resize(_e->size()); std::copy(_e->begin(), _e->end(), _o->testnestedflatbuffer.begin()); } } + { auto _e = testempty(); if (_e) { if(_o->testempty) { _e->UnPackTo(_o->testempty.get(), _resolver, _merge); } else { _o->testempty = flatbuffers::unique_ptr(_e->UnPack(_resolver)); } } else if (!_merge && _o->testempty) {_o->testempty.reset(); } } { auto _e = testbool(); _o->testbool = _e; } { auto _e = testhashs32_fnv1(); _o->testhashs32_fnv1 = _e; } { auto _e = testhashu32_fnv1(); _o->testhashu32_fnv1 = _e; } { auto _e = testhashs64_fnv1(); _o->testhashs64_fnv1 = _e; } { auto _e = testhashu64_fnv1(); _o->testhashu64_fnv1 = _e; } { auto _e = testhashs32_fnv1a(); _o->testhashs32_fnv1a = _e; } - { auto _e = testhashu32_fnv1a(); //scalar resolver, naked -if (_resolver) (*_resolver)(reinterpret_cast(&_o->testhashu32_fnv1a), static_cast(_e)); else _o->testhashu32_fnv1a = nullptr; } + { auto _e = testhashu32_fnv1a(); /*scalar resolver, naked*/ if (_resolver) (*_resolver)(reinterpret_cast(&_o->testhashu32_fnv1a), static_cast(_e)); else _o->testhashu32_fnv1a = nullptr; } { auto _e = testhashs64_fnv1a(); _o->testhashs64_fnv1a = _e; } { auto _e = testhashu64_fnv1a(); _o->testhashu64_fnv1a = _e; } - { auto _e = testarrayofbools(); if (_e) { _o->testarrayofbools.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->testarrayofbools[_i] = _e->Get(_i) != 0; } } } + { auto _e = testarrayofbools(); if (_e) {_o->testarrayofbools.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->testarrayofbools[_i] = _e->Get(_i) != 0; } } else if(!_merge) { _o->testarrayofbools.resize(0); _o->testarrayofbools.shrink_to_fit(); } } { auto _e = testf(); _o->testf = _e; } { auto _e = testf2(); _o->testf2 = _e; } { auto _e = testf3(); _o->testf3 = _e; } - { auto _e = testarrayofstring2(); if (_e) { _o->testarrayofstring2.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->testarrayofstring2[_i] = _e->Get(_i)->str(); } } } - { auto _e = testarrayofsortedstruct(); if (_e) { _o->testarrayofsortedstruct.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->testarrayofsortedstruct[_i] = *_e->Get(_i); } } } - { auto _e = flex(); if (_e) { _o->flex.resize(_e->size()); std::copy(_e->begin(), _e->end(), _o->flex.begin()); } } - { auto _e = test5(); if (_e) { _o->test5.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->test5[_i] = *_e->Get(_i); } } } - { auto _e = vector_of_longs(); if (_e) { _o->vector_of_longs.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->vector_of_longs[_i] = _e->Get(_i); } } } - { auto _e = vector_of_doubles(); if (_e) { _o->vector_of_doubles.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->vector_of_doubles[_i] = _e->Get(_i); } } } - { auto _e = parent_namespace_test(); if (_e) _o->parent_namespace_test = flatbuffers::unique_ptr(_e->UnPack(_resolver)); } - { auto _e = vector_of_referrables(); if (_e) { _o->vector_of_referrables.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->vector_of_referrables[_i] = flatbuffers::unique_ptr(_e->Get(_i)->UnPack(_resolver)); } } } - { auto _e = single_weak_reference(); //scalar resolver, naked -if (_resolver) (*_resolver)(reinterpret_cast(&_o->single_weak_reference), static_cast(_e)); else _o->single_weak_reference = nullptr; } - { auto _e = vector_of_weak_references(); if (_e) { _o->vector_of_weak_references.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { //vector resolver, naked -if (_resolver) (*_resolver)(reinterpret_cast(&_o->vector_of_weak_references[_i]), static_cast(_e->Get(_i))); else _o->vector_of_weak_references[_i] = nullptr; } } } - { auto _e = vector_of_strong_referrables(); if (_e) { _o->vector_of_strong_referrables.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->vector_of_strong_referrables[_i] = flatbuffers::unique_ptr(_e->Get(_i)->UnPack(_resolver)); } } } - { auto _e = co_owning_reference(); //scalar resolver, naked -if (_resolver) (*_resolver)(reinterpret_cast(&_o->co_owning_reference), static_cast(_e)); else _o->co_owning_reference = nullptr; } - { auto _e = vector_of_co_owning_references(); if (_e) { _o->vector_of_co_owning_references.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { //vector resolver, default_ptr_type -if (_resolver) (*_resolver)(reinterpret_cast(&_o->vector_of_co_owning_references[_i]), static_cast(_e->Get(_i)));/* else do nothing */; } } } - { auto _e = non_owning_reference(); //scalar resolver, naked -if (_resolver) (*_resolver)(reinterpret_cast(&_o->non_owning_reference), static_cast(_e)); else _o->non_owning_reference = nullptr; } - { auto _e = vector_of_non_owning_references(); if (_e) { _o->vector_of_non_owning_references.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { //vector resolver, naked -if (_resolver) (*_resolver)(reinterpret_cast(&_o->vector_of_non_owning_references[_i]), static_cast(_e->Get(_i))); else _o->vector_of_non_owning_references[_i] = nullptr; } } } + { auto _e = testarrayofstring2(); if (_e) {_o->testarrayofstring2.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->testarrayofstring2[_i] = _e->Get(_i)->str(); } } else if(!_merge) { _o->testarrayofstring2.resize(0); _o->testarrayofstring2.shrink_to_fit(); } } + { auto _e = testarrayofsortedstruct(); if (_e) {_o->testarrayofsortedstruct.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->testarrayofsortedstruct[_i] = *_e->Get(_i); } } else if(!_merge) { _o->testarrayofsortedstruct.resize(0); _o->testarrayofsortedstruct.shrink_to_fit(); } } + { auto _e = flex(); if (_e) {_o->flex.resize(_e->size()); std::copy(_e->begin(), _e->end(), _o->flex.begin()); } } + { auto _e = test5(); if (_e) {_o->test5.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->test5[_i] = *_e->Get(_i); } } else if(!_merge) { _o->test5.resize(0); _o->test5.shrink_to_fit(); } } + { auto _e = vector_of_longs(); if (_e) {_o->vector_of_longs.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->vector_of_longs[_i] = _e->Get(_i); } } else if(!_merge) { _o->vector_of_longs.resize(0); _o->vector_of_longs.shrink_to_fit(); } } + { auto _e = vector_of_doubles(); if (_e) {_o->vector_of_doubles.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->vector_of_doubles[_i] = _e->Get(_i); } } else if(!_merge) { _o->vector_of_doubles.resize(0); _o->vector_of_doubles.shrink_to_fit(); } } + { auto _e = parent_namespace_test(); if (_e) { if(_o->parent_namespace_test) { _e->UnPackTo(_o->parent_namespace_test.get(), _resolver, _merge); } else { _o->parent_namespace_test = flatbuffers::unique_ptr(_e->UnPack(_resolver)); } } else if (!_merge && _o->parent_namespace_test) {_o->parent_namespace_test.reset(); } } + { auto _e = vector_of_referrables(); if (_e) {_o->vector_of_referrables.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { if(_o->vector_of_referrables[_i]) { _e->Get(_i)->UnPackTo(_o->vector_of_referrables[_i].get(), _resolver, _merge); } else { _o->vector_of_referrables[_i] = flatbuffers::unique_ptr(_e->Get(_i)->UnPack(_resolver)); }; } } else if(!_merge) { _o->vector_of_referrables.resize(0); _o->vector_of_referrables.shrink_to_fit(); } } + { auto _e = single_weak_reference(); /*scalar resolver, naked*/ if (_resolver) (*_resolver)(reinterpret_cast(&_o->single_weak_reference), static_cast(_e)); else _o->single_weak_reference = nullptr; } + { auto _e = vector_of_weak_references(); if (_e) {_o->vector_of_weak_references.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { /*vector resolver, naked*/ if (_resolver) (*_resolver)(reinterpret_cast(&_o->vector_of_weak_references[_i]), static_cast(_e->Get(_i))); else _o->vector_of_weak_references[_i] = nullptr; } } else if(!_merge) { _o->vector_of_weak_references.resize(0); _o->vector_of_weak_references.shrink_to_fit(); } } + { auto _e = vector_of_strong_referrables(); if (_e) {_o->vector_of_strong_referrables.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { if(_o->vector_of_strong_referrables[_i]) { _e->Get(_i)->UnPackTo(_o->vector_of_strong_referrables[_i].get(), _resolver, _merge); } else { _o->vector_of_strong_referrables[_i] = flatbuffers::unique_ptr(_e->Get(_i)->UnPack(_resolver)); }; } } else if(!_merge) { _o->vector_of_strong_referrables.resize(0); _o->vector_of_strong_referrables.shrink_to_fit(); } } + { auto _e = co_owning_reference(); /*scalar resolver, naked*/ if (_resolver) (*_resolver)(reinterpret_cast(&_o->co_owning_reference), static_cast(_e)); else _o->co_owning_reference = nullptr; } + { auto _e = vector_of_co_owning_references(); if (_e) {_o->vector_of_co_owning_references.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { /*vector resolver, default_ptr_type*/ if (_resolver) (*_resolver)(reinterpret_cast(&_o->vector_of_co_owning_references[_i]), static_cast(_e->Get(_i)));/* else do nothing */; } } else if(!_merge) { _o->vector_of_co_owning_references.resize(0); _o->vector_of_co_owning_references.shrink_to_fit(); } } + { auto _e = non_owning_reference(); /*scalar resolver, naked*/ if (_resolver) (*_resolver)(reinterpret_cast(&_o->non_owning_reference), static_cast(_e)); else _o->non_owning_reference = nullptr; } + { auto _e = vector_of_non_owning_references(); if (_e) {_o->vector_of_non_owning_references.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { /*vector resolver, naked*/ if (_resolver) (*_resolver)(reinterpret_cast(&_o->vector_of_non_owning_references[_i]), static_cast(_e->Get(_i))); else _o->vector_of_non_owning_references[_i] = nullptr; } } else if(!_merge) { _o->vector_of_non_owning_references.resize(0); _o->vector_of_non_owning_references.shrink_to_fit(); } } { auto _e = any_unique_type(); _o->any_unique.type = _e; } { auto _e = any_unique(); if (_e) _o->any_unique.value = MyGame::Example::AnyUniqueAliasesUnion::UnPack(_e, any_unique_type(), _resolver); } { auto _e = any_ambiguous_type(); _o->any_ambiguous.type = _e; } { auto _e = any_ambiguous(); if (_e) _o->any_ambiguous.value = MyGame::Example::AnyAmbiguousAliasesUnion::UnPack(_e, any_ambiguous_type(), _resolver); } - { auto _e = vector_of_enums(); if (_e) { _o->vector_of_enums.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->vector_of_enums[_i] = static_cast(_e->Get(_i)); } } } + { auto _e = vector_of_enums(); if (_e) {_o->vector_of_enums.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->vector_of_enums[_i] = static_cast(_e->Get(_i)); } } else if(!_merge) { _o->vector_of_enums.resize(0); _o->vector_of_enums.shrink_to_fit(); } } { auto _e = signed_enum(); _o->signed_enum = _e; } - { auto _e = testrequirednestedflatbuffer(); if (_e) { _o->testrequirednestedflatbuffer.resize(_e->size()); std::copy(_e->begin(), _e->end(), _o->testrequirednestedflatbuffer.begin()); } } - { auto _e = scalar_key_sorted_tables(); if (_e) { _o->scalar_key_sorted_tables.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->scalar_key_sorted_tables[_i] = flatbuffers::unique_ptr(_e->Get(_i)->UnPack(_resolver)); } } } + { auto _e = testrequirednestedflatbuffer(); if (_e) {_o->testrequirednestedflatbuffer.resize(_e->size()); std::copy(_e->begin(), _e->end(), _o->testrequirednestedflatbuffer.begin()); } } + { auto _e = scalar_key_sorted_tables(); if (_e) {_o->scalar_key_sorted_tables.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { if(_o->scalar_key_sorted_tables[_i]) { _e->Get(_i)->UnPackTo(_o->scalar_key_sorted_tables[_i].get(), _resolver, _merge); } else { _o->scalar_key_sorted_tables[_i] = flatbuffers::unique_ptr(_e->Get(_i)->UnPack(_resolver)); }; } } else if(!_merge) { _o->scalar_key_sorted_tables.resize(0); _o->scalar_key_sorted_tables.shrink_to_fit(); } } { auto _e = native_inline(); if (_e) _o->native_inline = *_e; } { auto _e = long_enum_non_enum_default(); _o->long_enum_non_enum_default = _e; } { auto _e = long_enum_normal_default(); _o->long_enum_normal_default = _e; } @@ -3104,9 +3103,10 @@ inline TypeAliasesT *TypeAliases::UnPack(const flatbuffers::resolver_function_t return _o.release(); } -inline void TypeAliases::UnPackTo(TypeAliasesT *_o, const flatbuffers::resolver_function_t *_resolver) const { +inline void TypeAliases::UnPackTo(TypeAliasesT *_o, const flatbuffers::resolver_function_t *_resolver, bool _merge) const { (void)_o; (void)_resolver; + (void)_merge; { auto _e = i8(); _o->i8 = _e; } { auto _e = u8(); _o->u8 = _e; } { auto _e = i16(); _o->i16 = _e; } @@ -3117,8 +3117,8 @@ inline void TypeAliases::UnPackTo(TypeAliasesT *_o, const flatbuffers::resolver_ { auto _e = u64(); _o->u64 = _e; } { auto _e = f32(); _o->f32 = _e; } { auto _e = f64(); _o->f64 = _e; } - { auto _e = v8(); if (_e) { _o->v8.resize(_e->size()); std::copy(_e->begin(), _e->end(), _o->v8.begin()); } } - { auto _e = vf64(); if (_e) { _o->vf64.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->vf64[_i] = _e->Get(_i); } } } + { auto _e = v8(); if (_e) {_o->v8.resize(_e->size()); std::copy(_e->begin(), _e->end(), _o->v8.begin()); } } + { auto _e = vf64(); if (_e) {_o->vf64.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->vf64[_i] = _e->Get(_i); } } else if(!_merge) { _o->vf64.resize(0); _o->vf64.shrink_to_fit(); } } } inline flatbuffers::Offset TypeAliases::Pack(flatbuffers::FlatBufferBuilder &_fbb, const TypeAliasesT* _o, const flatbuffers::rehasher_function_t *_rehasher) { diff --git a/tests/monster_test_suffix/filesuffix_only/monster_test_suffix.h b/tests/monster_test_suffix/filesuffix_only/monster_test_suffix.h index f170e60230c..3c84d2c1181 100644 --- a/tests/monster_test_suffix/filesuffix_only/monster_test_suffix.h +++ b/tests/monster_test_suffix/filesuffix_only/monster_test_suffix.h @@ -954,7 +954,7 @@ struct InParentNamespace FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { verifier.EndTable(); } InParentNamespaceT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(InParentNamespaceT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(InParentNamespaceT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr, bool _merge = false) const; static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const InParentNamespaceT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); }; @@ -998,7 +998,7 @@ struct Monster FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { verifier.EndTable(); } MonsterT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(MonsterT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(MonsterT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr, bool _merge = false) const; static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const MonsterT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); }; @@ -1055,7 +1055,7 @@ struct TestSimpleTableWithEnum FLATBUFFERS_FINAL_CLASS : private flatbuffers::Ta verifier.EndTable(); } TestSimpleTableWithEnumT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(TestSimpleTableWithEnumT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(TestSimpleTableWithEnumT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr, bool _merge = false) const; static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const TestSimpleTableWithEnumT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); }; @@ -1138,7 +1138,7 @@ struct Stat FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { verifier.EndTable(); } StatT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(StatT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(StatT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr, bool _merge = false) const; static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const StatT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); }; @@ -1225,7 +1225,7 @@ struct Referrable FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { verifier.EndTable(); } ReferrableT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(ReferrableT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(ReferrableT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr, bool _merge = false) const; static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const ReferrableT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); }; @@ -1826,7 +1826,7 @@ struct Monster FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { verifier.EndTable(); } MonsterT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(MonsterT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(MonsterT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr, bool _merge = false) const; static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const MonsterT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); }; @@ -2403,7 +2403,7 @@ struct TypeAliases FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { verifier.EndTable(); } TypeAliasesT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(TypeAliasesT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(TypeAliasesT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr, bool _merge = false) const; static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const TypeAliasesT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); }; @@ -2540,9 +2540,10 @@ inline InParentNamespaceT *InParentNamespace::UnPack(const flatbuffers::resolver return _o.release(); } -inline void InParentNamespace::UnPackTo(InParentNamespaceT *_o, const flatbuffers::resolver_function_t *_resolver) const { +inline void InParentNamespace::UnPackTo(InParentNamespaceT *_o, const flatbuffers::resolver_function_t *_resolver, bool _merge) const { (void)_o; (void)_resolver; + (void)_merge; } inline flatbuffers::Offset InParentNamespace::Pack(flatbuffers::FlatBufferBuilder &_fbb, const InParentNamespaceT* _o, const flatbuffers::rehasher_function_t *_rehasher) { @@ -2575,9 +2576,10 @@ inline MonsterT *Monster::UnPack(const flatbuffers::resolver_function_t *_resolv return _o.release(); } -inline void Monster::UnPackTo(MonsterT *_o, const flatbuffers::resolver_function_t *_resolver) const { +inline void Monster::UnPackTo(MonsterT *_o, const flatbuffers::resolver_function_t *_resolver, bool _merge) const { (void)_o; (void)_resolver; + (void)_merge; } inline flatbuffers::Offset Monster::Pack(flatbuffers::FlatBufferBuilder &_fbb, const MonsterT* _o, const flatbuffers::rehasher_function_t *_rehasher) { @@ -2613,9 +2615,10 @@ inline TestSimpleTableWithEnumT *TestSimpleTableWithEnum::UnPack(const flatbuffe return _o.release(); } -inline void TestSimpleTableWithEnum::UnPackTo(TestSimpleTableWithEnumT *_o, const flatbuffers::resolver_function_t *_resolver) const { +inline void TestSimpleTableWithEnum::UnPackTo(TestSimpleTableWithEnumT *_o, const flatbuffers::resolver_function_t *_resolver, bool _merge) const { (void)_o; (void)_resolver; + (void)_merge; { auto _e = color(); _o->color = _e; } } @@ -2652,9 +2655,10 @@ inline StatT *Stat::UnPack(const flatbuffers::resolver_function_t *_resolver) co return _o.release(); } -inline void Stat::UnPackTo(StatT *_o, const flatbuffers::resolver_function_t *_resolver) const { +inline void Stat::UnPackTo(StatT *_o, const flatbuffers::resolver_function_t *_resolver, bool _merge) const { (void)_o; (void)_resolver; + (void)_merge; { auto _e = id(); if (_e) _o->id = _e->str(); } { auto _e = val(); _o->val = _e; } { auto _e = count(); _o->count = _e; } @@ -2695,9 +2699,10 @@ inline ReferrableT *Referrable::UnPack(const flatbuffers::resolver_function_t *_ return _o.release(); } -inline void Referrable::UnPackTo(ReferrableT *_o, const flatbuffers::resolver_function_t *_resolver) const { +inline void Referrable::UnPackTo(ReferrableT *_o, const flatbuffers::resolver_function_t *_resolver, bool _merge) const { (void)_o; (void)_resolver; + (void)_merge; { auto _e = id(); _o->id = _e; } } @@ -2893,66 +2898,60 @@ inline MonsterT *Monster::UnPack(const flatbuffers::resolver_function_t *_resolv return _o.release(); } -inline void Monster::UnPackTo(MonsterT *_o, const flatbuffers::resolver_function_t *_resolver) const { +inline void Monster::UnPackTo(MonsterT *_o, const flatbuffers::resolver_function_t *_resolver, bool _merge) const { (void)_o; (void)_resolver; + (void)_merge; { auto _e = pos(); if (_e) _o->pos = flatbuffers::unique_ptr(new MyGame::Example::Vec3(*_e)); } { auto _e = mana(); _o->mana = _e; } { auto _e = hp(); _o->hp = _e; } { auto _e = name(); if (_e) _o->name = _e->str(); } - { auto _e = inventory(); if (_e) { _o->inventory.resize(_e->size()); std::copy(_e->begin(), _e->end(), _o->inventory.begin()); } } + { auto _e = inventory(); if (_e) {_o->inventory.resize(_e->size()); std::copy(_e->begin(), _e->end(), _o->inventory.begin()); } } { auto _e = color(); _o->color = _e; } { auto _e = test_type(); _o->test.type = _e; } { auto _e = test(); if (_e) _o->test.value = MyGame::Example::AnyUnion::UnPack(_e, test_type(), _resolver); } - { auto _e = test4(); if (_e) { _o->test4.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->test4[_i] = *_e->Get(_i); } } } - { auto _e = testarrayofstring(); if (_e) { _o->testarrayofstring.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->testarrayofstring[_i] = _e->Get(_i)->str(); } } } - { auto _e = testarrayoftables(); if (_e) { _o->testarrayoftables.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->testarrayoftables[_i] = flatbuffers::unique_ptr(_e->Get(_i)->UnPack(_resolver)); } } } - { auto _e = enemy(); if (_e) _o->enemy = flatbuffers::unique_ptr(_e->UnPack(_resolver)); } - { auto _e = testnestedflatbuffer(); if (_e) { _o->testnestedflatbuffer.resize(_e->size()); std::copy(_e->begin(), _e->end(), _o->testnestedflatbuffer.begin()); } } - { auto _e = testempty(); if (_e) _o->testempty = flatbuffers::unique_ptr(_e->UnPack(_resolver)); } + { auto _e = test4(); if (_e) {_o->test4.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->test4[_i] = *_e->Get(_i); } } else if(!_merge) { _o->test4.resize(0); _o->test4.shrink_to_fit(); } } + { auto _e = testarrayofstring(); if (_e) {_o->testarrayofstring.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->testarrayofstring[_i] = _e->Get(_i)->str(); } } else if(!_merge) { _o->testarrayofstring.resize(0); _o->testarrayofstring.shrink_to_fit(); } } + { auto _e = testarrayoftables(); if (_e) {_o->testarrayoftables.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { if(_o->testarrayoftables[_i]) { _e->Get(_i)->UnPackTo(_o->testarrayoftables[_i].get(), _resolver, _merge); } else { _o->testarrayoftables[_i] = flatbuffers::unique_ptr(_e->Get(_i)->UnPack(_resolver)); }; } } else if(!_merge) { _o->testarrayoftables.resize(0); _o->testarrayoftables.shrink_to_fit(); } } + { auto _e = enemy(); if (_e) { if(_o->enemy) { _e->UnPackTo(_o->enemy.get(), _resolver, _merge); } else { _o->enemy = flatbuffers::unique_ptr(_e->UnPack(_resolver)); } } else if (!_merge && _o->enemy) {_o->enemy.reset(); } } + { auto _e = testnestedflatbuffer(); if (_e) {_o->testnestedflatbuffer.resize(_e->size()); std::copy(_e->begin(), _e->end(), _o->testnestedflatbuffer.begin()); } } + { auto _e = testempty(); if (_e) { if(_o->testempty) { _e->UnPackTo(_o->testempty.get(), _resolver, _merge); } else { _o->testempty = flatbuffers::unique_ptr(_e->UnPack(_resolver)); } } else if (!_merge && _o->testempty) {_o->testempty.reset(); } } { auto _e = testbool(); _o->testbool = _e; } { auto _e = testhashs32_fnv1(); _o->testhashs32_fnv1 = _e; } { auto _e = testhashu32_fnv1(); _o->testhashu32_fnv1 = _e; } { auto _e = testhashs64_fnv1(); _o->testhashs64_fnv1 = _e; } { auto _e = testhashu64_fnv1(); _o->testhashu64_fnv1 = _e; } { auto _e = testhashs32_fnv1a(); _o->testhashs32_fnv1a = _e; } - { auto _e = testhashu32_fnv1a(); //scalar resolver, naked -if (_resolver) (*_resolver)(reinterpret_cast(&_o->testhashu32_fnv1a), static_cast(_e)); else _o->testhashu32_fnv1a = nullptr; } + { auto _e = testhashu32_fnv1a(); /*scalar resolver, naked*/ if (_resolver) (*_resolver)(reinterpret_cast(&_o->testhashu32_fnv1a), static_cast(_e)); else _o->testhashu32_fnv1a = nullptr; } { auto _e = testhashs64_fnv1a(); _o->testhashs64_fnv1a = _e; } { auto _e = testhashu64_fnv1a(); _o->testhashu64_fnv1a = _e; } - { auto _e = testarrayofbools(); if (_e) { _o->testarrayofbools.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->testarrayofbools[_i] = _e->Get(_i) != 0; } } } + { auto _e = testarrayofbools(); if (_e) {_o->testarrayofbools.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->testarrayofbools[_i] = _e->Get(_i) != 0; } } else if(!_merge) { _o->testarrayofbools.resize(0); _o->testarrayofbools.shrink_to_fit(); } } { auto _e = testf(); _o->testf = _e; } { auto _e = testf2(); _o->testf2 = _e; } { auto _e = testf3(); _o->testf3 = _e; } - { auto _e = testarrayofstring2(); if (_e) { _o->testarrayofstring2.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->testarrayofstring2[_i] = _e->Get(_i)->str(); } } } - { auto _e = testarrayofsortedstruct(); if (_e) { _o->testarrayofsortedstruct.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->testarrayofsortedstruct[_i] = *_e->Get(_i); } } } - { auto _e = flex(); if (_e) { _o->flex.resize(_e->size()); std::copy(_e->begin(), _e->end(), _o->flex.begin()); } } - { auto _e = test5(); if (_e) { _o->test5.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->test5[_i] = *_e->Get(_i); } } } - { auto _e = vector_of_longs(); if (_e) { _o->vector_of_longs.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->vector_of_longs[_i] = _e->Get(_i); } } } - { auto _e = vector_of_doubles(); if (_e) { _o->vector_of_doubles.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->vector_of_doubles[_i] = _e->Get(_i); } } } - { auto _e = parent_namespace_test(); if (_e) _o->parent_namespace_test = flatbuffers::unique_ptr(_e->UnPack(_resolver)); } - { auto _e = vector_of_referrables(); if (_e) { _o->vector_of_referrables.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->vector_of_referrables[_i] = flatbuffers::unique_ptr(_e->Get(_i)->UnPack(_resolver)); } } } - { auto _e = single_weak_reference(); //scalar resolver, naked -if (_resolver) (*_resolver)(reinterpret_cast(&_o->single_weak_reference), static_cast(_e)); else _o->single_weak_reference = nullptr; } - { auto _e = vector_of_weak_references(); if (_e) { _o->vector_of_weak_references.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { //vector resolver, naked -if (_resolver) (*_resolver)(reinterpret_cast(&_o->vector_of_weak_references[_i]), static_cast(_e->Get(_i))); else _o->vector_of_weak_references[_i] = nullptr; } } } - { auto _e = vector_of_strong_referrables(); if (_e) { _o->vector_of_strong_referrables.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->vector_of_strong_referrables[_i] = flatbuffers::unique_ptr(_e->Get(_i)->UnPack(_resolver)); } } } - { auto _e = co_owning_reference(); //scalar resolver, naked -if (_resolver) (*_resolver)(reinterpret_cast(&_o->co_owning_reference), static_cast(_e)); else _o->co_owning_reference = nullptr; } - { auto _e = vector_of_co_owning_references(); if (_e) { _o->vector_of_co_owning_references.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { //vector resolver, default_ptr_type -if (_resolver) (*_resolver)(reinterpret_cast(&_o->vector_of_co_owning_references[_i]), static_cast(_e->Get(_i)));/* else do nothing */; } } } - { auto _e = non_owning_reference(); //scalar resolver, naked -if (_resolver) (*_resolver)(reinterpret_cast(&_o->non_owning_reference), static_cast(_e)); else _o->non_owning_reference = nullptr; } - { auto _e = vector_of_non_owning_references(); if (_e) { _o->vector_of_non_owning_references.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { //vector resolver, naked -if (_resolver) (*_resolver)(reinterpret_cast(&_o->vector_of_non_owning_references[_i]), static_cast(_e->Get(_i))); else _o->vector_of_non_owning_references[_i] = nullptr; } } } + { auto _e = testarrayofstring2(); if (_e) {_o->testarrayofstring2.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->testarrayofstring2[_i] = _e->Get(_i)->str(); } } else if(!_merge) { _o->testarrayofstring2.resize(0); _o->testarrayofstring2.shrink_to_fit(); } } + { auto _e = testarrayofsortedstruct(); if (_e) {_o->testarrayofsortedstruct.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->testarrayofsortedstruct[_i] = *_e->Get(_i); } } else if(!_merge) { _o->testarrayofsortedstruct.resize(0); _o->testarrayofsortedstruct.shrink_to_fit(); } } + { auto _e = flex(); if (_e) {_o->flex.resize(_e->size()); std::copy(_e->begin(), _e->end(), _o->flex.begin()); } } + { auto _e = test5(); if (_e) {_o->test5.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->test5[_i] = *_e->Get(_i); } } else if(!_merge) { _o->test5.resize(0); _o->test5.shrink_to_fit(); } } + { auto _e = vector_of_longs(); if (_e) {_o->vector_of_longs.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->vector_of_longs[_i] = _e->Get(_i); } } else if(!_merge) { _o->vector_of_longs.resize(0); _o->vector_of_longs.shrink_to_fit(); } } + { auto _e = vector_of_doubles(); if (_e) {_o->vector_of_doubles.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->vector_of_doubles[_i] = _e->Get(_i); } } else if(!_merge) { _o->vector_of_doubles.resize(0); _o->vector_of_doubles.shrink_to_fit(); } } + { auto _e = parent_namespace_test(); if (_e) { if(_o->parent_namespace_test) { _e->UnPackTo(_o->parent_namespace_test.get(), _resolver, _merge); } else { _o->parent_namespace_test = flatbuffers::unique_ptr(_e->UnPack(_resolver)); } } else if (!_merge && _o->parent_namespace_test) {_o->parent_namespace_test.reset(); } } + { auto _e = vector_of_referrables(); if (_e) {_o->vector_of_referrables.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { if(_o->vector_of_referrables[_i]) { _e->Get(_i)->UnPackTo(_o->vector_of_referrables[_i].get(), _resolver, _merge); } else { _o->vector_of_referrables[_i] = flatbuffers::unique_ptr(_e->Get(_i)->UnPack(_resolver)); }; } } else if(!_merge) { _o->vector_of_referrables.resize(0); _o->vector_of_referrables.shrink_to_fit(); } } + { auto _e = single_weak_reference(); /*scalar resolver, naked*/ if (_resolver) (*_resolver)(reinterpret_cast(&_o->single_weak_reference), static_cast(_e)); else _o->single_weak_reference = nullptr; } + { auto _e = vector_of_weak_references(); if (_e) {_o->vector_of_weak_references.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { /*vector resolver, naked*/ if (_resolver) (*_resolver)(reinterpret_cast(&_o->vector_of_weak_references[_i]), static_cast(_e->Get(_i))); else _o->vector_of_weak_references[_i] = nullptr; } } else if(!_merge) { _o->vector_of_weak_references.resize(0); _o->vector_of_weak_references.shrink_to_fit(); } } + { auto _e = vector_of_strong_referrables(); if (_e) {_o->vector_of_strong_referrables.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { if(_o->vector_of_strong_referrables[_i]) { _e->Get(_i)->UnPackTo(_o->vector_of_strong_referrables[_i].get(), _resolver, _merge); } else { _o->vector_of_strong_referrables[_i] = flatbuffers::unique_ptr(_e->Get(_i)->UnPack(_resolver)); }; } } else if(!_merge) { _o->vector_of_strong_referrables.resize(0); _o->vector_of_strong_referrables.shrink_to_fit(); } } + { auto _e = co_owning_reference(); /*scalar resolver, naked*/ if (_resolver) (*_resolver)(reinterpret_cast(&_o->co_owning_reference), static_cast(_e)); else _o->co_owning_reference = nullptr; } + { auto _e = vector_of_co_owning_references(); if (_e) {_o->vector_of_co_owning_references.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { /*vector resolver, default_ptr_type*/ if (_resolver) (*_resolver)(reinterpret_cast(&_o->vector_of_co_owning_references[_i]), static_cast(_e->Get(_i)));/* else do nothing */; } } else if(!_merge) { _o->vector_of_co_owning_references.resize(0); _o->vector_of_co_owning_references.shrink_to_fit(); } } + { auto _e = non_owning_reference(); /*scalar resolver, naked*/ if (_resolver) (*_resolver)(reinterpret_cast(&_o->non_owning_reference), static_cast(_e)); else _o->non_owning_reference = nullptr; } + { auto _e = vector_of_non_owning_references(); if (_e) {_o->vector_of_non_owning_references.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { /*vector resolver, naked*/ if (_resolver) (*_resolver)(reinterpret_cast(&_o->vector_of_non_owning_references[_i]), static_cast(_e->Get(_i))); else _o->vector_of_non_owning_references[_i] = nullptr; } } else if(!_merge) { _o->vector_of_non_owning_references.resize(0); _o->vector_of_non_owning_references.shrink_to_fit(); } } { auto _e = any_unique_type(); _o->any_unique.type = _e; } { auto _e = any_unique(); if (_e) _o->any_unique.value = MyGame::Example::AnyUniqueAliasesUnion::UnPack(_e, any_unique_type(), _resolver); } { auto _e = any_ambiguous_type(); _o->any_ambiguous.type = _e; } { auto _e = any_ambiguous(); if (_e) _o->any_ambiguous.value = MyGame::Example::AnyAmbiguousAliasesUnion::UnPack(_e, any_ambiguous_type(), _resolver); } - { auto _e = vector_of_enums(); if (_e) { _o->vector_of_enums.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->vector_of_enums[_i] = static_cast(_e->Get(_i)); } } } + { auto _e = vector_of_enums(); if (_e) {_o->vector_of_enums.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->vector_of_enums[_i] = static_cast(_e->Get(_i)); } } else if(!_merge) { _o->vector_of_enums.resize(0); _o->vector_of_enums.shrink_to_fit(); } } { auto _e = signed_enum(); _o->signed_enum = _e; } - { auto _e = testrequirednestedflatbuffer(); if (_e) { _o->testrequirednestedflatbuffer.resize(_e->size()); std::copy(_e->begin(), _e->end(), _o->testrequirednestedflatbuffer.begin()); } } - { auto _e = scalar_key_sorted_tables(); if (_e) { _o->scalar_key_sorted_tables.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->scalar_key_sorted_tables[_i] = flatbuffers::unique_ptr(_e->Get(_i)->UnPack(_resolver)); } } } + { auto _e = testrequirednestedflatbuffer(); if (_e) {_o->testrequirednestedflatbuffer.resize(_e->size()); std::copy(_e->begin(), _e->end(), _o->testrequirednestedflatbuffer.begin()); } } + { auto _e = scalar_key_sorted_tables(); if (_e) {_o->scalar_key_sorted_tables.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { if(_o->scalar_key_sorted_tables[_i]) { _e->Get(_i)->UnPackTo(_o->scalar_key_sorted_tables[_i].get(), _resolver, _merge); } else { _o->scalar_key_sorted_tables[_i] = flatbuffers::unique_ptr(_e->Get(_i)->UnPack(_resolver)); }; } } else if(!_merge) { _o->scalar_key_sorted_tables.resize(0); _o->scalar_key_sorted_tables.shrink_to_fit(); } } { auto _e = native_inline(); if (_e) _o->native_inline = *_e; } { auto _e = long_enum_non_enum_default(); _o->long_enum_non_enum_default = _e; } { auto _e = long_enum_normal_default(); _o->long_enum_normal_default = _e; } @@ -3104,9 +3103,10 @@ inline TypeAliasesT *TypeAliases::UnPack(const flatbuffers::resolver_function_t return _o.release(); } -inline void TypeAliases::UnPackTo(TypeAliasesT *_o, const flatbuffers::resolver_function_t *_resolver) const { +inline void TypeAliases::UnPackTo(TypeAliasesT *_o, const flatbuffers::resolver_function_t *_resolver, bool _merge) const { (void)_o; (void)_resolver; + (void)_merge; { auto _e = i8(); _o->i8 = _e; } { auto _e = u8(); _o->u8 = _e; } { auto _e = i16(); _o->i16 = _e; } @@ -3117,8 +3117,8 @@ inline void TypeAliases::UnPackTo(TypeAliasesT *_o, const flatbuffers::resolver_ { auto _e = u64(); _o->u64 = _e; } { auto _e = f32(); _o->f32 = _e; } { auto _e = f64(); _o->f64 = _e; } - { auto _e = v8(); if (_e) { _o->v8.resize(_e->size()); std::copy(_e->begin(), _e->end(), _o->v8.begin()); } } - { auto _e = vf64(); if (_e) { _o->vf64.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->vf64[_i] = _e->Get(_i); } } } + { auto _e = v8(); if (_e) {_o->v8.resize(_e->size()); std::copy(_e->begin(), _e->end(), _o->v8.begin()); } } + { auto _e = vf64(); if (_e) {_o->vf64.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->vf64[_i] = _e->Get(_i); } } else if(!_merge) { _o->vf64.resize(0); _o->vf64.shrink_to_fit(); } } } inline flatbuffers::Offset TypeAliases::Pack(flatbuffers::FlatBufferBuilder &_fbb, const TypeAliasesT* _o, const flatbuffers::rehasher_function_t *_rehasher) { diff --git a/tests/monster_test_suffix/monster_test_suffix.hpp b/tests/monster_test_suffix/monster_test_suffix.hpp index f170e60230c..3c84d2c1181 100644 --- a/tests/monster_test_suffix/monster_test_suffix.hpp +++ b/tests/monster_test_suffix/monster_test_suffix.hpp @@ -954,7 +954,7 @@ struct InParentNamespace FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { verifier.EndTable(); } InParentNamespaceT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(InParentNamespaceT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(InParentNamespaceT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr, bool _merge = false) const; static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const InParentNamespaceT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); }; @@ -998,7 +998,7 @@ struct Monster FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { verifier.EndTable(); } MonsterT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(MonsterT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(MonsterT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr, bool _merge = false) const; static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const MonsterT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); }; @@ -1055,7 +1055,7 @@ struct TestSimpleTableWithEnum FLATBUFFERS_FINAL_CLASS : private flatbuffers::Ta verifier.EndTable(); } TestSimpleTableWithEnumT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(TestSimpleTableWithEnumT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(TestSimpleTableWithEnumT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr, bool _merge = false) const; static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const TestSimpleTableWithEnumT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); }; @@ -1138,7 +1138,7 @@ struct Stat FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { verifier.EndTable(); } StatT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(StatT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(StatT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr, bool _merge = false) const; static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const StatT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); }; @@ -1225,7 +1225,7 @@ struct Referrable FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { verifier.EndTable(); } ReferrableT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(ReferrableT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(ReferrableT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr, bool _merge = false) const; static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const ReferrableT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); }; @@ -1826,7 +1826,7 @@ struct Monster FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { verifier.EndTable(); } MonsterT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(MonsterT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(MonsterT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr, bool _merge = false) const; static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const MonsterT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); }; @@ -2403,7 +2403,7 @@ struct TypeAliases FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { verifier.EndTable(); } TypeAliasesT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(TypeAliasesT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(TypeAliasesT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr, bool _merge = false) const; static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const TypeAliasesT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); }; @@ -2540,9 +2540,10 @@ inline InParentNamespaceT *InParentNamespace::UnPack(const flatbuffers::resolver return _o.release(); } -inline void InParentNamespace::UnPackTo(InParentNamespaceT *_o, const flatbuffers::resolver_function_t *_resolver) const { +inline void InParentNamespace::UnPackTo(InParentNamespaceT *_o, const flatbuffers::resolver_function_t *_resolver, bool _merge) const { (void)_o; (void)_resolver; + (void)_merge; } inline flatbuffers::Offset InParentNamespace::Pack(flatbuffers::FlatBufferBuilder &_fbb, const InParentNamespaceT* _o, const flatbuffers::rehasher_function_t *_rehasher) { @@ -2575,9 +2576,10 @@ inline MonsterT *Monster::UnPack(const flatbuffers::resolver_function_t *_resolv return _o.release(); } -inline void Monster::UnPackTo(MonsterT *_o, const flatbuffers::resolver_function_t *_resolver) const { +inline void Monster::UnPackTo(MonsterT *_o, const flatbuffers::resolver_function_t *_resolver, bool _merge) const { (void)_o; (void)_resolver; + (void)_merge; } inline flatbuffers::Offset Monster::Pack(flatbuffers::FlatBufferBuilder &_fbb, const MonsterT* _o, const flatbuffers::rehasher_function_t *_rehasher) { @@ -2613,9 +2615,10 @@ inline TestSimpleTableWithEnumT *TestSimpleTableWithEnum::UnPack(const flatbuffe return _o.release(); } -inline void TestSimpleTableWithEnum::UnPackTo(TestSimpleTableWithEnumT *_o, const flatbuffers::resolver_function_t *_resolver) const { +inline void TestSimpleTableWithEnum::UnPackTo(TestSimpleTableWithEnumT *_o, const flatbuffers::resolver_function_t *_resolver, bool _merge) const { (void)_o; (void)_resolver; + (void)_merge; { auto _e = color(); _o->color = _e; } } @@ -2652,9 +2655,10 @@ inline StatT *Stat::UnPack(const flatbuffers::resolver_function_t *_resolver) co return _o.release(); } -inline void Stat::UnPackTo(StatT *_o, const flatbuffers::resolver_function_t *_resolver) const { +inline void Stat::UnPackTo(StatT *_o, const flatbuffers::resolver_function_t *_resolver, bool _merge) const { (void)_o; (void)_resolver; + (void)_merge; { auto _e = id(); if (_e) _o->id = _e->str(); } { auto _e = val(); _o->val = _e; } { auto _e = count(); _o->count = _e; } @@ -2695,9 +2699,10 @@ inline ReferrableT *Referrable::UnPack(const flatbuffers::resolver_function_t *_ return _o.release(); } -inline void Referrable::UnPackTo(ReferrableT *_o, const flatbuffers::resolver_function_t *_resolver) const { +inline void Referrable::UnPackTo(ReferrableT *_o, const flatbuffers::resolver_function_t *_resolver, bool _merge) const { (void)_o; (void)_resolver; + (void)_merge; { auto _e = id(); _o->id = _e; } } @@ -2893,66 +2898,60 @@ inline MonsterT *Monster::UnPack(const flatbuffers::resolver_function_t *_resolv return _o.release(); } -inline void Monster::UnPackTo(MonsterT *_o, const flatbuffers::resolver_function_t *_resolver) const { +inline void Monster::UnPackTo(MonsterT *_o, const flatbuffers::resolver_function_t *_resolver, bool _merge) const { (void)_o; (void)_resolver; + (void)_merge; { auto _e = pos(); if (_e) _o->pos = flatbuffers::unique_ptr(new MyGame::Example::Vec3(*_e)); } { auto _e = mana(); _o->mana = _e; } { auto _e = hp(); _o->hp = _e; } { auto _e = name(); if (_e) _o->name = _e->str(); } - { auto _e = inventory(); if (_e) { _o->inventory.resize(_e->size()); std::copy(_e->begin(), _e->end(), _o->inventory.begin()); } } + { auto _e = inventory(); if (_e) {_o->inventory.resize(_e->size()); std::copy(_e->begin(), _e->end(), _o->inventory.begin()); } } { auto _e = color(); _o->color = _e; } { auto _e = test_type(); _o->test.type = _e; } { auto _e = test(); if (_e) _o->test.value = MyGame::Example::AnyUnion::UnPack(_e, test_type(), _resolver); } - { auto _e = test4(); if (_e) { _o->test4.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->test4[_i] = *_e->Get(_i); } } } - { auto _e = testarrayofstring(); if (_e) { _o->testarrayofstring.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->testarrayofstring[_i] = _e->Get(_i)->str(); } } } - { auto _e = testarrayoftables(); if (_e) { _o->testarrayoftables.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->testarrayoftables[_i] = flatbuffers::unique_ptr(_e->Get(_i)->UnPack(_resolver)); } } } - { auto _e = enemy(); if (_e) _o->enemy = flatbuffers::unique_ptr(_e->UnPack(_resolver)); } - { auto _e = testnestedflatbuffer(); if (_e) { _o->testnestedflatbuffer.resize(_e->size()); std::copy(_e->begin(), _e->end(), _o->testnestedflatbuffer.begin()); } } - { auto _e = testempty(); if (_e) _o->testempty = flatbuffers::unique_ptr(_e->UnPack(_resolver)); } + { auto _e = test4(); if (_e) {_o->test4.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->test4[_i] = *_e->Get(_i); } } else if(!_merge) { _o->test4.resize(0); _o->test4.shrink_to_fit(); } } + { auto _e = testarrayofstring(); if (_e) {_o->testarrayofstring.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->testarrayofstring[_i] = _e->Get(_i)->str(); } } else if(!_merge) { _o->testarrayofstring.resize(0); _o->testarrayofstring.shrink_to_fit(); } } + { auto _e = testarrayoftables(); if (_e) {_o->testarrayoftables.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { if(_o->testarrayoftables[_i]) { _e->Get(_i)->UnPackTo(_o->testarrayoftables[_i].get(), _resolver, _merge); } else { _o->testarrayoftables[_i] = flatbuffers::unique_ptr(_e->Get(_i)->UnPack(_resolver)); }; } } else if(!_merge) { _o->testarrayoftables.resize(0); _o->testarrayoftables.shrink_to_fit(); } } + { auto _e = enemy(); if (_e) { if(_o->enemy) { _e->UnPackTo(_o->enemy.get(), _resolver, _merge); } else { _o->enemy = flatbuffers::unique_ptr(_e->UnPack(_resolver)); } } else if (!_merge && _o->enemy) {_o->enemy.reset(); } } + { auto _e = testnestedflatbuffer(); if (_e) {_o->testnestedflatbuffer.resize(_e->size()); std::copy(_e->begin(), _e->end(), _o->testnestedflatbuffer.begin()); } } + { auto _e = testempty(); if (_e) { if(_o->testempty) { _e->UnPackTo(_o->testempty.get(), _resolver, _merge); } else { _o->testempty = flatbuffers::unique_ptr(_e->UnPack(_resolver)); } } else if (!_merge && _o->testempty) {_o->testempty.reset(); } } { auto _e = testbool(); _o->testbool = _e; } { auto _e = testhashs32_fnv1(); _o->testhashs32_fnv1 = _e; } { auto _e = testhashu32_fnv1(); _o->testhashu32_fnv1 = _e; } { auto _e = testhashs64_fnv1(); _o->testhashs64_fnv1 = _e; } { auto _e = testhashu64_fnv1(); _o->testhashu64_fnv1 = _e; } { auto _e = testhashs32_fnv1a(); _o->testhashs32_fnv1a = _e; } - { auto _e = testhashu32_fnv1a(); //scalar resolver, naked -if (_resolver) (*_resolver)(reinterpret_cast(&_o->testhashu32_fnv1a), static_cast(_e)); else _o->testhashu32_fnv1a = nullptr; } + { auto _e = testhashu32_fnv1a(); /*scalar resolver, naked*/ if (_resolver) (*_resolver)(reinterpret_cast(&_o->testhashu32_fnv1a), static_cast(_e)); else _o->testhashu32_fnv1a = nullptr; } { auto _e = testhashs64_fnv1a(); _o->testhashs64_fnv1a = _e; } { auto _e = testhashu64_fnv1a(); _o->testhashu64_fnv1a = _e; } - { auto _e = testarrayofbools(); if (_e) { _o->testarrayofbools.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->testarrayofbools[_i] = _e->Get(_i) != 0; } } } + { auto _e = testarrayofbools(); if (_e) {_o->testarrayofbools.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->testarrayofbools[_i] = _e->Get(_i) != 0; } } else if(!_merge) { _o->testarrayofbools.resize(0); _o->testarrayofbools.shrink_to_fit(); } } { auto _e = testf(); _o->testf = _e; } { auto _e = testf2(); _o->testf2 = _e; } { auto _e = testf3(); _o->testf3 = _e; } - { auto _e = testarrayofstring2(); if (_e) { _o->testarrayofstring2.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->testarrayofstring2[_i] = _e->Get(_i)->str(); } } } - { auto _e = testarrayofsortedstruct(); if (_e) { _o->testarrayofsortedstruct.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->testarrayofsortedstruct[_i] = *_e->Get(_i); } } } - { auto _e = flex(); if (_e) { _o->flex.resize(_e->size()); std::copy(_e->begin(), _e->end(), _o->flex.begin()); } } - { auto _e = test5(); if (_e) { _o->test5.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->test5[_i] = *_e->Get(_i); } } } - { auto _e = vector_of_longs(); if (_e) { _o->vector_of_longs.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->vector_of_longs[_i] = _e->Get(_i); } } } - { auto _e = vector_of_doubles(); if (_e) { _o->vector_of_doubles.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->vector_of_doubles[_i] = _e->Get(_i); } } } - { auto _e = parent_namespace_test(); if (_e) _o->parent_namespace_test = flatbuffers::unique_ptr(_e->UnPack(_resolver)); } - { auto _e = vector_of_referrables(); if (_e) { _o->vector_of_referrables.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->vector_of_referrables[_i] = flatbuffers::unique_ptr(_e->Get(_i)->UnPack(_resolver)); } } } - { auto _e = single_weak_reference(); //scalar resolver, naked -if (_resolver) (*_resolver)(reinterpret_cast(&_o->single_weak_reference), static_cast(_e)); else _o->single_weak_reference = nullptr; } - { auto _e = vector_of_weak_references(); if (_e) { _o->vector_of_weak_references.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { //vector resolver, naked -if (_resolver) (*_resolver)(reinterpret_cast(&_o->vector_of_weak_references[_i]), static_cast(_e->Get(_i))); else _o->vector_of_weak_references[_i] = nullptr; } } } - { auto _e = vector_of_strong_referrables(); if (_e) { _o->vector_of_strong_referrables.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->vector_of_strong_referrables[_i] = flatbuffers::unique_ptr(_e->Get(_i)->UnPack(_resolver)); } } } - { auto _e = co_owning_reference(); //scalar resolver, naked -if (_resolver) (*_resolver)(reinterpret_cast(&_o->co_owning_reference), static_cast(_e)); else _o->co_owning_reference = nullptr; } - { auto _e = vector_of_co_owning_references(); if (_e) { _o->vector_of_co_owning_references.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { //vector resolver, default_ptr_type -if (_resolver) (*_resolver)(reinterpret_cast(&_o->vector_of_co_owning_references[_i]), static_cast(_e->Get(_i)));/* else do nothing */; } } } - { auto _e = non_owning_reference(); //scalar resolver, naked -if (_resolver) (*_resolver)(reinterpret_cast(&_o->non_owning_reference), static_cast(_e)); else _o->non_owning_reference = nullptr; } - { auto _e = vector_of_non_owning_references(); if (_e) { _o->vector_of_non_owning_references.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { //vector resolver, naked -if (_resolver) (*_resolver)(reinterpret_cast(&_o->vector_of_non_owning_references[_i]), static_cast(_e->Get(_i))); else _o->vector_of_non_owning_references[_i] = nullptr; } } } + { auto _e = testarrayofstring2(); if (_e) {_o->testarrayofstring2.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->testarrayofstring2[_i] = _e->Get(_i)->str(); } } else if(!_merge) { _o->testarrayofstring2.resize(0); _o->testarrayofstring2.shrink_to_fit(); } } + { auto _e = testarrayofsortedstruct(); if (_e) {_o->testarrayofsortedstruct.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->testarrayofsortedstruct[_i] = *_e->Get(_i); } } else if(!_merge) { _o->testarrayofsortedstruct.resize(0); _o->testarrayofsortedstruct.shrink_to_fit(); } } + { auto _e = flex(); if (_e) {_o->flex.resize(_e->size()); std::copy(_e->begin(), _e->end(), _o->flex.begin()); } } + { auto _e = test5(); if (_e) {_o->test5.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->test5[_i] = *_e->Get(_i); } } else if(!_merge) { _o->test5.resize(0); _o->test5.shrink_to_fit(); } } + { auto _e = vector_of_longs(); if (_e) {_o->vector_of_longs.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->vector_of_longs[_i] = _e->Get(_i); } } else if(!_merge) { _o->vector_of_longs.resize(0); _o->vector_of_longs.shrink_to_fit(); } } + { auto _e = vector_of_doubles(); if (_e) {_o->vector_of_doubles.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->vector_of_doubles[_i] = _e->Get(_i); } } else if(!_merge) { _o->vector_of_doubles.resize(0); _o->vector_of_doubles.shrink_to_fit(); } } + { auto _e = parent_namespace_test(); if (_e) { if(_o->parent_namespace_test) { _e->UnPackTo(_o->parent_namespace_test.get(), _resolver, _merge); } else { _o->parent_namespace_test = flatbuffers::unique_ptr(_e->UnPack(_resolver)); } } else if (!_merge && _o->parent_namespace_test) {_o->parent_namespace_test.reset(); } } + { auto _e = vector_of_referrables(); if (_e) {_o->vector_of_referrables.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { if(_o->vector_of_referrables[_i]) { _e->Get(_i)->UnPackTo(_o->vector_of_referrables[_i].get(), _resolver, _merge); } else { _o->vector_of_referrables[_i] = flatbuffers::unique_ptr(_e->Get(_i)->UnPack(_resolver)); }; } } else if(!_merge) { _o->vector_of_referrables.resize(0); _o->vector_of_referrables.shrink_to_fit(); } } + { auto _e = single_weak_reference(); /*scalar resolver, naked*/ if (_resolver) (*_resolver)(reinterpret_cast(&_o->single_weak_reference), static_cast(_e)); else _o->single_weak_reference = nullptr; } + { auto _e = vector_of_weak_references(); if (_e) {_o->vector_of_weak_references.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { /*vector resolver, naked*/ if (_resolver) (*_resolver)(reinterpret_cast(&_o->vector_of_weak_references[_i]), static_cast(_e->Get(_i))); else _o->vector_of_weak_references[_i] = nullptr; } } else if(!_merge) { _o->vector_of_weak_references.resize(0); _o->vector_of_weak_references.shrink_to_fit(); } } + { auto _e = vector_of_strong_referrables(); if (_e) {_o->vector_of_strong_referrables.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { if(_o->vector_of_strong_referrables[_i]) { _e->Get(_i)->UnPackTo(_o->vector_of_strong_referrables[_i].get(), _resolver, _merge); } else { _o->vector_of_strong_referrables[_i] = flatbuffers::unique_ptr(_e->Get(_i)->UnPack(_resolver)); }; } } else if(!_merge) { _o->vector_of_strong_referrables.resize(0); _o->vector_of_strong_referrables.shrink_to_fit(); } } + { auto _e = co_owning_reference(); /*scalar resolver, naked*/ if (_resolver) (*_resolver)(reinterpret_cast(&_o->co_owning_reference), static_cast(_e)); else _o->co_owning_reference = nullptr; } + { auto _e = vector_of_co_owning_references(); if (_e) {_o->vector_of_co_owning_references.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { /*vector resolver, default_ptr_type*/ if (_resolver) (*_resolver)(reinterpret_cast(&_o->vector_of_co_owning_references[_i]), static_cast(_e->Get(_i)));/* else do nothing */; } } else if(!_merge) { _o->vector_of_co_owning_references.resize(0); _o->vector_of_co_owning_references.shrink_to_fit(); } } + { auto _e = non_owning_reference(); /*scalar resolver, naked*/ if (_resolver) (*_resolver)(reinterpret_cast(&_o->non_owning_reference), static_cast(_e)); else _o->non_owning_reference = nullptr; } + { auto _e = vector_of_non_owning_references(); if (_e) {_o->vector_of_non_owning_references.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { /*vector resolver, naked*/ if (_resolver) (*_resolver)(reinterpret_cast(&_o->vector_of_non_owning_references[_i]), static_cast(_e->Get(_i))); else _o->vector_of_non_owning_references[_i] = nullptr; } } else if(!_merge) { _o->vector_of_non_owning_references.resize(0); _o->vector_of_non_owning_references.shrink_to_fit(); } } { auto _e = any_unique_type(); _o->any_unique.type = _e; } { auto _e = any_unique(); if (_e) _o->any_unique.value = MyGame::Example::AnyUniqueAliasesUnion::UnPack(_e, any_unique_type(), _resolver); } { auto _e = any_ambiguous_type(); _o->any_ambiguous.type = _e; } { auto _e = any_ambiguous(); if (_e) _o->any_ambiguous.value = MyGame::Example::AnyAmbiguousAliasesUnion::UnPack(_e, any_ambiguous_type(), _resolver); } - { auto _e = vector_of_enums(); if (_e) { _o->vector_of_enums.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->vector_of_enums[_i] = static_cast(_e->Get(_i)); } } } + { auto _e = vector_of_enums(); if (_e) {_o->vector_of_enums.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->vector_of_enums[_i] = static_cast(_e->Get(_i)); } } else if(!_merge) { _o->vector_of_enums.resize(0); _o->vector_of_enums.shrink_to_fit(); } } { auto _e = signed_enum(); _o->signed_enum = _e; } - { auto _e = testrequirednestedflatbuffer(); if (_e) { _o->testrequirednestedflatbuffer.resize(_e->size()); std::copy(_e->begin(), _e->end(), _o->testrequirednestedflatbuffer.begin()); } } - { auto _e = scalar_key_sorted_tables(); if (_e) { _o->scalar_key_sorted_tables.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->scalar_key_sorted_tables[_i] = flatbuffers::unique_ptr(_e->Get(_i)->UnPack(_resolver)); } } } + { auto _e = testrequirednestedflatbuffer(); if (_e) {_o->testrequirednestedflatbuffer.resize(_e->size()); std::copy(_e->begin(), _e->end(), _o->testrequirednestedflatbuffer.begin()); } } + { auto _e = scalar_key_sorted_tables(); if (_e) {_o->scalar_key_sorted_tables.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { if(_o->scalar_key_sorted_tables[_i]) { _e->Get(_i)->UnPackTo(_o->scalar_key_sorted_tables[_i].get(), _resolver, _merge); } else { _o->scalar_key_sorted_tables[_i] = flatbuffers::unique_ptr(_e->Get(_i)->UnPack(_resolver)); }; } } else if(!_merge) { _o->scalar_key_sorted_tables.resize(0); _o->scalar_key_sorted_tables.shrink_to_fit(); } } { auto _e = native_inline(); if (_e) _o->native_inline = *_e; } { auto _e = long_enum_non_enum_default(); _o->long_enum_non_enum_default = _e; } { auto _e = long_enum_normal_default(); _o->long_enum_normal_default = _e; } @@ -3104,9 +3103,10 @@ inline TypeAliasesT *TypeAliases::UnPack(const flatbuffers::resolver_function_t return _o.release(); } -inline void TypeAliases::UnPackTo(TypeAliasesT *_o, const flatbuffers::resolver_function_t *_resolver) const { +inline void TypeAliases::UnPackTo(TypeAliasesT *_o, const flatbuffers::resolver_function_t *_resolver, bool _merge) const { (void)_o; (void)_resolver; + (void)_merge; { auto _e = i8(); _o->i8 = _e; } { auto _e = u8(); _o->u8 = _e; } { auto _e = i16(); _o->i16 = _e; } @@ -3117,8 +3117,8 @@ inline void TypeAliases::UnPackTo(TypeAliasesT *_o, const flatbuffers::resolver_ { auto _e = u64(); _o->u64 = _e; } { auto _e = f32(); _o->f32 = _e; } { auto _e = f64(); _o->f64 = _e; } - { auto _e = v8(); if (_e) { _o->v8.resize(_e->size()); std::copy(_e->begin(), _e->end(), _o->v8.begin()); } } - { auto _e = vf64(); if (_e) { _o->vf64.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->vf64[_i] = _e->Get(_i); } } } + { auto _e = v8(); if (_e) {_o->v8.resize(_e->size()); std::copy(_e->begin(), _e->end(), _o->v8.begin()); } } + { auto _e = vf64(); if (_e) {_o->vf64.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->vf64[_i] = _e->Get(_i); } } else if(!_merge) { _o->vf64.resize(0); _o->vf64.shrink_to_fit(); } } } inline flatbuffers::Offset TypeAliases::Pack(flatbuffers::FlatBufferBuilder &_fbb, const TypeAliasesT* _o, const flatbuffers::rehasher_function_t *_rehasher) { diff --git a/tests/namespace_test/namespace_test1_generated.h b/tests/namespace_test/namespace_test1_generated.h index c2af28eb255..92e2c661760 100644 --- a/tests/namespace_test/namespace_test1_generated.h +++ b/tests/namespace_test/namespace_test1_generated.h @@ -252,7 +252,7 @@ struct TableInNestedNS FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { verifier.EndTable(); } TableInNestedNST *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(TableInNestedNST *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(TableInNestedNST *_o, const flatbuffers::resolver_function_t *_resolver = nullptr, bool _merge = false) const; static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const TableInNestedNST* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); }; @@ -301,9 +301,10 @@ inline TableInNestedNST *TableInNestedNS::UnPack(const flatbuffers::resolver_fun return _o.release(); } -inline void TableInNestedNS::UnPackTo(TableInNestedNST *_o, const flatbuffers::resolver_function_t *_resolver) const { +inline void TableInNestedNS::UnPackTo(TableInNestedNST *_o, const flatbuffers::resolver_function_t *_resolver, bool _merge) const { (void)_o; (void)_resolver; + (void)_merge; { auto _e = foo(); _o->foo = _e; } } diff --git a/tests/namespace_test/namespace_test2_generated.h b/tests/namespace_test/namespace_test2_generated.h index 19e5732629c..35393d6e353 100644 --- a/tests/namespace_test/namespace_test2_generated.h +++ b/tests/namespace_test/namespace_test2_generated.h @@ -138,7 +138,7 @@ struct TableInFirstNS FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { verifier.EndTable(); } TableInFirstNST *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(TableInFirstNST *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(TableInFirstNST *_o, const flatbuffers::resolver_function_t *_resolver = nullptr, bool _merge = false) const; static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const TableInFirstNST* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); }; @@ -245,7 +245,7 @@ struct TableInC FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { verifier.EndTable(); } TableInCT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(TableInCT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(TableInCT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr, bool _merge = false) const; static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const TableInCT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); }; @@ -323,7 +323,7 @@ struct SecondTableInA FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { verifier.EndTable(); } SecondTableInAT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(SecondTableInAT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(SecondTableInAT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr, bool _merge = false) const; static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const SecondTableInAT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); }; @@ -390,10 +390,11 @@ inline TableInFirstNST *TableInFirstNS::UnPack(const flatbuffers::resolver_funct return _o.release(); } -inline void TableInFirstNS::UnPackTo(TableInFirstNST *_o, const flatbuffers::resolver_function_t *_resolver) const { +inline void TableInFirstNS::UnPackTo(TableInFirstNST *_o, const flatbuffers::resolver_function_t *_resolver, bool _merge) const { (void)_o; (void)_resolver; - { auto _e = foo_table(); if (_e) _o->foo_table = flatbuffers::unique_ptr(_e->UnPack(_resolver)); } + (void)_merge; + { auto _e = foo_table(); if (_e) { if(_o->foo_table) { _e->UnPackTo(_o->foo_table.get(), _resolver, _merge); } else { _o->foo_table = flatbuffers::unique_ptr(_e->UnPack(_resolver)); } } else if (!_merge && _o->foo_table) {_o->foo_table.reset(); } } { auto _e = foo_enum(); _o->foo_enum = _e; } { auto _e = foo_union_type(); _o->foo_union.type = _e; } { auto _e = foo_union(); if (_e) _o->foo_union.value = NamespaceA::NamespaceB::UnionInNestedNSUnion::UnPack(_e, foo_union_type(), _resolver); } @@ -455,11 +456,12 @@ inline TableInCT *TableInC::UnPack(const flatbuffers::resolver_function_t *_reso return _o.release(); } -inline void TableInC::UnPackTo(TableInCT *_o, const flatbuffers::resolver_function_t *_resolver) const { +inline void TableInC::UnPackTo(TableInCT *_o, const flatbuffers::resolver_function_t *_resolver, bool _merge) const { (void)_o; (void)_resolver; - { auto _e = refer_to_a1(); if (_e) _o->refer_to_a1 = flatbuffers::unique_ptr(_e->UnPack(_resolver)); } - { auto _e = refer_to_a2(); if (_e) _o->refer_to_a2 = flatbuffers::unique_ptr(_e->UnPack(_resolver)); } + (void)_merge; + { auto _e = refer_to_a1(); if (_e) { if(_o->refer_to_a1) { _e->UnPackTo(_o->refer_to_a1.get(), _resolver, _merge); } else { _o->refer_to_a1 = flatbuffers::unique_ptr(_e->UnPack(_resolver)); } } else if (!_merge && _o->refer_to_a1) {_o->refer_to_a1.reset(); } } + { auto _e = refer_to_a2(); if (_e) { if(_o->refer_to_a2) { _e->UnPackTo(_o->refer_to_a2.get(), _resolver, _merge); } else { _o->refer_to_a2 = flatbuffers::unique_ptr(_e->UnPack(_resolver)); } } else if (!_merge && _o->refer_to_a2) {_o->refer_to_a2.reset(); } } } inline flatbuffers::Offset TableInC::Pack(flatbuffers::FlatBufferBuilder &_fbb, const TableInCT* _o, const flatbuffers::rehasher_function_t *_rehasher) { @@ -508,10 +510,11 @@ inline SecondTableInAT *SecondTableInA::UnPack(const flatbuffers::resolver_funct return _o.release(); } -inline void SecondTableInA::UnPackTo(SecondTableInAT *_o, const flatbuffers::resolver_function_t *_resolver) const { +inline void SecondTableInA::UnPackTo(SecondTableInAT *_o, const flatbuffers::resolver_function_t *_resolver, bool _merge) const { (void)_o; (void)_resolver; - { auto _e = refer_to_c(); if (_e) _o->refer_to_c = flatbuffers::unique_ptr(_e->UnPack(_resolver)); } + (void)_merge; + { auto _e = refer_to_c(); if (_e) { if(_o->refer_to_c) { _e->UnPackTo(_o->refer_to_c.get(), _resolver, _merge); } else { _o->refer_to_c = flatbuffers::unique_ptr(_e->UnPack(_resolver)); } } else if (!_merge && _o->refer_to_c) {_o->refer_to_c.reset(); } } } inline flatbuffers::Offset SecondTableInA::Pack(flatbuffers::FlatBufferBuilder &_fbb, const SecondTableInAT* _o, const flatbuffers::rehasher_function_t *_rehasher) { diff --git a/tests/native_inline_table_test_generated.h b/tests/native_inline_table_test_generated.h index b2d5722cd67..7a9919fd1be 100644 --- a/tests/native_inline_table_test_generated.h +++ b/tests/native_inline_table_test_generated.h @@ -56,7 +56,7 @@ struct NativeInlineTable FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { verifier.EndTable(); } NativeInlineTableT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(NativeInlineTableT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(NativeInlineTableT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr, bool _merge = false) const; static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const NativeInlineTableT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); }; @@ -116,7 +116,7 @@ struct TestNativeInlineTable FLATBUFFERS_FINAL_CLASS : private flatbuffers::Tabl verifier.EndTable(); } TestNativeInlineTableT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(TestNativeInlineTableT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(TestNativeInlineTableT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr, bool _merge = false) const; static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const TestNativeInlineTableT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); }; @@ -174,9 +174,10 @@ inline NativeInlineTableT *NativeInlineTable::UnPack(const flatbuffers::resolver return _o.release(); } -inline void NativeInlineTable::UnPackTo(NativeInlineTableT *_o, const flatbuffers::resolver_function_t *_resolver) const { +inline void NativeInlineTable::UnPackTo(NativeInlineTableT *_o, const flatbuffers::resolver_function_t *_resolver, bool _merge) const { (void)_o; (void)_resolver; + (void)_merge; { auto _e = a(); _o->a = _e; } } @@ -211,10 +212,11 @@ inline TestNativeInlineTableT *TestNativeInlineTable::UnPack(const flatbuffers:: return _o.release(); } -inline void TestNativeInlineTable::UnPackTo(TestNativeInlineTableT *_o, const flatbuffers::resolver_function_t *_resolver) const { +inline void TestNativeInlineTable::UnPackTo(TestNativeInlineTableT *_o, const flatbuffers::resolver_function_t *_resolver, bool _merge) const { (void)_o; (void)_resolver; - { auto _e = t(); if (_e) { _o->t.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->t[_i] = *flatbuffers::unique_ptr(_e->Get(_i)->UnPack(_resolver)); } } } + (void)_merge; + { auto _e = t(); if (_e) {_o->t.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->t[_i] = *flatbuffers::unique_ptr(_e->Get(_i)->UnPack(_resolver)); } } else if(!_merge) { _o->t.resize(0); _o->t.shrink_to_fit(); } } } inline flatbuffers::Offset TestNativeInlineTable::Pack(flatbuffers::FlatBufferBuilder &_fbb, const TestNativeInlineTableT* _o, const flatbuffers::rehasher_function_t *_rehasher) { diff --git a/tests/native_type_test_generated.h b/tests/native_type_test_generated.h index f4e24c6340a..353162f3e08 100644 --- a/tests/native_type_test_generated.h +++ b/tests/native_type_test_generated.h @@ -150,7 +150,7 @@ struct ApplicationData FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { verifier.EndTable(); } ApplicationDataT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(ApplicationDataT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(ApplicationDataT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr, bool _merge = false) const; static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const ApplicationDataT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); }; @@ -205,11 +205,12 @@ inline ApplicationDataT *ApplicationData::UnPack(const flatbuffers::resolver_fun return _o.release(); } -inline void ApplicationData::UnPackTo(ApplicationDataT *_o, const flatbuffers::resolver_function_t *_resolver) const { +inline void ApplicationData::UnPackTo(ApplicationDataT *_o, const flatbuffers::resolver_function_t *_resolver, bool _merge) const { (void)_o; (void)_resolver; - { auto _e = vectors(); if (_e) { _o->vectors.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->vectors[_i] = flatbuffers::UnPack(*_e->Get(_i)); } } } - { auto _e = vectors_alt(); if (_e) { _o->vectors_alt.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->vectors_alt[_i] = flatbuffers::UnPackVector3DAlt(*_e->Get(_i)); } } } + (void)_merge; + { auto _e = vectors(); if (_e) {_o->vectors.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->vectors[_i] = flatbuffers::UnPack(*_e->Get(_i)); } } else if(!_merge) { _o->vectors.resize(0); _o->vectors.shrink_to_fit(); } } + { auto _e = vectors_alt(); if (_e) {_o->vectors_alt.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->vectors_alt[_i] = flatbuffers::UnPackVector3DAlt(*_e->Get(_i)); } } else if(!_merge) { _o->vectors_alt.resize(0); _o->vectors_alt.shrink_to_fit(); } } } inline flatbuffers::Offset ApplicationData::Pack(flatbuffers::FlatBufferBuilder &_fbb, const ApplicationDataT* _o, const flatbuffers::rehasher_function_t *_rehasher) { diff --git a/tests/optional_scalars_generated.h b/tests/optional_scalars_generated.h index f71f98df8ff..8875274cc96 100644 --- a/tests/optional_scalars_generated.h +++ b/tests/optional_scalars_generated.h @@ -398,7 +398,7 @@ struct ScalarStuff FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { verifier.EndTable(); } ScalarStuffT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(ScalarStuffT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(ScalarStuffT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr, bool _merge = false) const; static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const ScalarStuffT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); }; @@ -657,9 +657,10 @@ inline ScalarStuffT *ScalarStuff::UnPack(const flatbuffers::resolver_function_t return _o.release(); } -inline void ScalarStuff::UnPackTo(ScalarStuffT *_o, const flatbuffers::resolver_function_t *_resolver) const { +inline void ScalarStuff::UnPackTo(ScalarStuffT *_o, const flatbuffers::resolver_function_t *_resolver, bool _merge) const { (void)_o; (void)_resolver; + (void)_merge; { auto _e = just_i8(); _o->just_i8 = _e; } { auto _e = maybe_i8(); _o->maybe_i8 = _e; } { auto _e = default_i8(); _o->default_i8 = _e; } diff --git a/tests/test.cpp b/tests/test.cpp index d99e606506e..7e05c08ff22 100644 --- a/tests/test.cpp +++ b/tests/test.cpp @@ -1409,6 +1409,7 @@ int FlatBufferTests(const std::string &tests_data_path) { MutateFlatBuffersTest(flatbuf.data(), flatbuf.size()); ObjectFlatBuffersTest(flatbuf.data()); + UnPackTo(flatbuf.data()); MiniReflectFlatBuffersTest(flatbuf.data()); MiniReflectFixedLengthArrayTest(); diff --git a/tests/union_vector/union_vector_generated.h b/tests/union_vector/union_vector_generated.h index 5198b7c7663..09dd1a5ccff 100644 --- a/tests/union_vector/union_vector_generated.h +++ b/tests/union_vector/union_vector_generated.h @@ -473,7 +473,7 @@ struct Attacker FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { verifier.EndTable(); } AttackerT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(AttackerT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(AttackerT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr, bool _merge = false) const; static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const AttackerT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); }; @@ -531,7 +531,7 @@ struct HandFan FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { verifier.EndTable(); } HandFanT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(HandFanT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(HandFanT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr, bool _merge = false) const; static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const HandFanT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); }; @@ -633,7 +633,7 @@ struct Movie FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { verifier.EndTable(); } MovieT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(MovieT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(MovieT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr, bool _merge = false) const; static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const MovieT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); }; @@ -713,9 +713,10 @@ inline AttackerT *Attacker::UnPack(const flatbuffers::resolver_function_t *_reso return _o.release(); } -inline void Attacker::UnPackTo(AttackerT *_o, const flatbuffers::resolver_function_t *_resolver) const { +inline void Attacker::UnPackTo(AttackerT *_o, const flatbuffers::resolver_function_t *_resolver, bool _merge) const { (void)_o; (void)_resolver; + (void)_merge; { auto _e = sword_attack_damage(); _o->sword_attack_damage = _e; } } @@ -750,9 +751,10 @@ inline HandFanT *HandFan::UnPack(const flatbuffers::resolver_function_t *_resolv return _o.release(); } -inline void HandFan::UnPackTo(HandFanT *_o, const flatbuffers::resolver_function_t *_resolver) const { +inline void HandFan::UnPackTo(HandFanT *_o, const flatbuffers::resolver_function_t *_resolver, bool _merge) const { (void)_o; (void)_resolver; + (void)_merge; { auto _e = length(); _o->length = _e; } } @@ -788,13 +790,14 @@ inline MovieT *Movie::UnPack(const flatbuffers::resolver_function_t *_resolver) return _o.release(); } -inline void Movie::UnPackTo(MovieT *_o, const flatbuffers::resolver_function_t *_resolver) const { +inline void Movie::UnPackTo(MovieT *_o, const flatbuffers::resolver_function_t *_resolver, bool _merge) const { (void)_o; (void)_resolver; + (void)_merge; { auto _e = main_character_type(); _o->main_character.type = _e; } { auto _e = main_character(); if (_e) _o->main_character.value = CharacterUnion::UnPack(_e, main_character_type(), _resolver); } - { auto _e = characters_type(); if (_e) { _o->characters.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->characters[_i].type = static_cast(_e->Get(_i)); } } } - { auto _e = characters(); if (_e) { _o->characters.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->characters[_i].value = CharacterUnion::UnPack(_e->Get(_i), characters_type()->GetEnum(_i), _resolver); } } } + { auto _e = characters_type(); if (_e) {_o->characters.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->characters[_i].type = static_cast(_e->Get(_i)); } } else if(!_merge) { _o->characters.resize(0); _o->characters.shrink_to_fit(); } } + { auto _e = characters(); if (_e) {_o->characters.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->characters[_i].value = CharacterUnion::UnPack(_e->Get(_i), characters_type()->GetEnum(_i), _resolver); } } else if(!_merge) { _o->characters.resize(0); _o->characters.shrink_to_fit(); } } } inline flatbuffers::Offset Movie::Pack(flatbuffers::FlatBufferBuilder &_fbb, const MovieT* _o, const flatbuffers::rehasher_function_t *_rehasher) {