From 1311bc5c4939c69cf2c8c1147eb9ca9d5d7c3016 Mon Sep 17 00:00:00 2001 From: tmimmanuel <14046872+tmimmanuel@users.noreply.github.com> Date: Tue, 10 Mar 2026 19:03:42 +0100 Subject: [PATCH 1/3] Fix missing namespace qualifier in Pack() for cross-namespace table references --- CMakeLists.txt | 1 + src/idl_gen_cpp.cpp | 6 +++--- tests/cross_namespace_pack_test.fbs | 18 ++++++++++++++++++ tests/test.cpp | 25 +++++++++++++++++++++++++ 4 files changed, 47 insertions(+), 3 deletions(-) create mode 100644 tests/cross_namespace_pack_test.fbs diff --git a/CMakeLists.txt b/CMakeLists.txt index 7bf48e6aec..eb5bed523b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -559,6 +559,7 @@ if(FLATBUFFERS_BUILD_TESTS) compile_schema_for_test(tests/64bit/evolution/v1.fbs "${FLATC_OPT_COMP}") compile_schema_for_test(tests/64bit/evolution/v2.fbs "${FLATC_OPT_COMP}") compile_schema_for_test(tests/union_underlying_type_test.fbs "${FLATC_OPT_SCOPED_ENUMS}") + compile_schema_for_test(tests/cross_namespace_pack_test.fbs "${FLATC_OPT_COMP}") if(FLATBUFFERS_CODE_SANITIZE) add_fsanitize_to_target(flattests ${FLATBUFFERS_CODE_SANITIZE}) diff --git a/src/idl_gen_cpp.cpp b/src/idl_gen_cpp.cpp index 51bb820490..b02e75a8d8 100644 --- a/src/idl_gen_cpp.cpp +++ b/src/idl_gen_cpp.cpp @@ -3825,7 +3825,7 @@ class CppGenerator : public BaseGenerator { code += WrapInNameSpace(*vector_type.struct_def) + ">> "; code += "(" + value + ".size(), "; code += "[](size_t i, _VectorArgs *__va) { "; - code += "return Create" + vector_type.struct_def->name; + code += "return " + WrapInNameSpace(vector_type.struct_def->defined_namespace, "Create" + vector_type.struct_def->name); code += "(*__va->__fbb, "; if (field.native_inline) { code += "&(__va->_" + value + "[i])"; @@ -3938,8 +3938,8 @@ class CppGenerator : public BaseGenerator { } } else { // _o->field ? CreateT(_fbb, _o->field.get(), _rehasher); - const std::string& type = field.value.type.struct_def->name; - code += value + " ? Create" + type; + const auto &nested_struct = *field.value.type.struct_def; + code += value + " ? " + WrapInNameSpace(nested_struct.defined_namespace, "Create" + nested_struct.name); code += "(_fbb, " + value; if (!field.native_inline) code += GenPtrGet(field); code += ", _rehasher) : 0"; diff --git a/tests/cross_namespace_pack_test.fbs b/tests/cross_namespace_pack_test.fbs new file mode 100644 index 0000000000..d62025c4ad --- /dev/null +++ b/tests/cross_namespace_pack_test.fbs @@ -0,0 +1,18 @@ +// Test for cross-namespace Pack() code generation (issue #8948). +// Verifies that Create* calls in Pack() are properly namespace-qualified +// when referencing tables from different namespaces. + +namespace native; + +table TableWithNative { + value: int; +} + +namespace foo; + +table Consumer { + c1: native.TableWithNative; + c2: [native.TableWithNative]; +} + +root_type Consumer; diff --git a/tests/test.cpp b/tests/test.cpp index c94d21592f..80437a86a5 100644 --- a/tests/test.cpp +++ b/tests/test.cpp @@ -54,6 +54,7 @@ #include "reflection_test.h" #include "tests/union_vector/union_vector_generated.h" #include "union_underlying_type_test_generated.h" +#include "cross_namespace_pack_test_generated.h" #if !defined(_MSC_VER) || _MSC_VER >= 1700 #include "tests/arrays_test_generated.h" #endif @@ -1721,6 +1722,29 @@ static void Offset64Tests() { #endif } +// Test that Pack() generates correctly namespace-qualified Create* calls +// when referencing tables from different namespaces. (issue #8948) +void CrossNamespacePackTest() { + // Build a Consumer with a cross-namespace TableWithNative reference. + foo::ConsumerT consumer; + consumer.c1 = std::make_unique(); + consumer.c1->value = 42; + + // Add a vector element too. + consumer.c2.push_back(std::make_unique()); + consumer.c2[0]->value = 99; + + // Pack and verify round-trip. + flatbuffers::FlatBufferBuilder fbb; + fbb.Finish(foo::Consumer::Pack(fbb, &consumer)); + + auto *packed = flatbuffers::GetRoot(fbb.GetBufferPointer()); + auto unpacked = packed->UnPack(); + TEST_EQ(unpacked->c1->value, 42); + TEST_EQ(unpacked->c2.size(), 1); + TEST_EQ(unpacked->c2[0]->value, 99); +} + int FlatBufferTests(const std::string& tests_data_path) { // Run our various test suites: @@ -1838,6 +1862,7 @@ int FlatBufferTests(const std::string& tests_data_path) { UnionUnderlyingTypeTest(); StructsInHashTableTest(); DefaultVectorsStringsTest(); + CrossNamespacePackTest(); return 0; } } // namespace From 53694b1846fc2a2ba5a5b433b43f5fa9b6975844 Mon Sep 17 00:00:00 2001 From: tmimmanuel <14046872+tmimmanuel@users.noreply.github.com> Date: Tue, 10 Mar 2026 19:13:40 +0100 Subject: [PATCH 2/3] Fix missing namespace qualifier in Pack() --- samples/monster_generated.h | 2 +- scripts/generate_code.py | 5 +++++ src/idl_gen_cpp.cpp | 10 +++++++--- .../cpp17/generated_cpp17/monster_test_generated.h | 14 +++++++------- tests/monster_test_generated.h | 14 +++++++------- .../ext_only/monster_test_generated.hpp | 14 +++++++------- .../filesuffix_only/monster_test_suffix.h | 14 +++++++------- tests/monster_test_suffix/monster_test_suffix.hpp | 14 +++++++------- tests/namespace_test/namespace_test2_generated.h | 8 ++++---- tests/native_type_test_generated.h | 4 ++-- tests/test.cpp | 4 ++-- 11 files changed, 56 insertions(+), 47 deletions(-) diff --git a/samples/monster_generated.h b/samples/monster_generated.h index 9cf1abddb2..5266397d3e 100644 --- a/samples/monster_generated.h +++ b/samples/monster_generated.h @@ -643,7 +643,7 @@ inline ::flatbuffers::Offset Monster::Pack(::flatbuffers::FlatBufferBui auto _name = _o->name.empty() ? 0 : _fbb.CreateString(_o->name); auto _inventory = _o->inventory.size() ? _fbb.CreateVector(_o->inventory) : 0; auto _color = _o->color; - auto _weapons = _o->weapons.size() ? _fbb.CreateVector<::flatbuffers::Offset> (_o->weapons.size(), [](size_t i, _VectorArgs *__va) { return CreateWeapon(*__va->__fbb, __va->__o->weapons[i].get(), __va->__rehasher); }, &_va ) : 0; + auto _weapons = _o->weapons.size() ? _fbb.CreateVector<::flatbuffers::Offset> (_o->weapons.size(), [](size_t i, _VectorArgs *__va) { return MyGame::Sample::CreateWeapon(*__va->__fbb, __va->__o->weapons[i].get(), __va->__rehasher); }, &_va ) : 0; auto _equipped_type = _o->equipped.type; auto _equipped = _o->equipped.Pack(_fbb); auto _path = _o->path.size() ? _fbb.CreateVectorOfStructs(_o->path) : 0; diff --git a/scripts/generate_code.py b/scripts/generate_code.py index a278ae28c5..e14b96dcda 100755 --- a/scripts/generate_code.py +++ b/scripts/generate_code.py @@ -394,6 +394,11 @@ def glob(path, pattern): schema="native_inline_table_test.fbs", ) +flatc( + ["--cpp", "--gen-compare", "--gen-mutable", "--gen-object-api", "--reflect-names"], + schema="cross_namespace_pack_test.fbs", +) + flatc( RUST_OPTS, prefix="arrays_test", diff --git a/src/idl_gen_cpp.cpp b/src/idl_gen_cpp.cpp index b02e75a8d8..ffd94e45ea 100644 --- a/src/idl_gen_cpp.cpp +++ b/src/idl_gen_cpp.cpp @@ -3825,7 +3825,9 @@ class CppGenerator : public BaseGenerator { code += WrapInNameSpace(*vector_type.struct_def) + ">> "; code += "(" + value + ".size(), "; code += "[](size_t i, _VectorArgs *__va) { "; - code += "return " + WrapInNameSpace(vector_type.struct_def->defined_namespace, "Create" + vector_type.struct_def->name); + code += "return " + + WrapInNameSpace(vector_type.struct_def->defined_namespace, + "Create" + vector_type.struct_def->name); code += "(*__va->__fbb, "; if (field.native_inline) { code += "&(__va->_" + value + "[i])"; @@ -3938,8 +3940,10 @@ class CppGenerator : public BaseGenerator { } } else { // _o->field ? CreateT(_fbb, _o->field.get(), _rehasher); - const auto &nested_struct = *field.value.type.struct_def; - code += value + " ? " + WrapInNameSpace(nested_struct.defined_namespace, "Create" + nested_struct.name); + const auto& nested_struct = *field.value.type.struct_def; + code += value + " ? " + + WrapInNameSpace(nested_struct.defined_namespace, + "Create" + nested_struct.name); code += "(_fbb, " + value; if (!field.native_inline) code += GenPtrGet(field); code += ", _rehasher) : 0"; diff --git a/tests/cpp17/generated_cpp17/monster_test_generated.h b/tests/cpp17/generated_cpp17/monster_test_generated.h index bb6efe1b93..74e11c2ed9 100644 --- a/tests/cpp17/generated_cpp17/monster_test_generated.h +++ b/tests/cpp17/generated_cpp17/monster_test_generated.h @@ -3276,10 +3276,10 @@ inline ::flatbuffers::Offset Monster::Pack(::flatbuffers::FlatBufferBui auto _test = _o->test.Pack(_fbb); auto _test4 = _o->test4.size() ? _fbb.CreateVectorOfStructs(_o->test4) : 0; auto _testarrayofstring = _o->testarrayofstring.size() ? _fbb.CreateVectorOfStrings(_o->testarrayofstring) : 0; - auto _testarrayoftables = _o->testarrayoftables.size() ? _fbb.CreateVector<::flatbuffers::Offset> (_o->testarrayoftables.size(), [](size_t i, _VectorArgs *__va) { return CreateMonster(*__va->__fbb, __va->__o->testarrayoftables[i].get(), __va->__rehasher); }, &_va ) : 0; - auto _enemy = _o->enemy ? CreateMonster(_fbb, _o->enemy.get(), _rehasher) : 0; + auto _testarrayoftables = _o->testarrayoftables.size() ? _fbb.CreateVector<::flatbuffers::Offset> (_o->testarrayoftables.size(), [](size_t i, _VectorArgs *__va) { return MyGame::Example::CreateMonster(*__va->__fbb, __va->__o->testarrayoftables[i].get(), __va->__rehasher); }, &_va ) : 0; + auto _enemy = _o->enemy ? MyGame::Example::CreateMonster(_fbb, _o->enemy.get(), _rehasher) : 0; auto _testnestedflatbuffer = _o->testnestedflatbuffer.size() ? _fbb.CreateVector(_o->testnestedflatbuffer) : 0; - auto _testempty = _o->testempty ? CreateStat(_fbb, _o->testempty.get(), _rehasher) : 0; + auto _testempty = _o->testempty ? MyGame::Example::CreateStat(_fbb, _o->testempty.get(), _rehasher) : 0; auto _testbool = _o->testbool; auto _testhashs32_fnv1 = _o->testhashs32_fnv1; auto _testhashu32_fnv1 = _o->testhashu32_fnv1; @@ -3299,11 +3299,11 @@ inline ::flatbuffers::Offset Monster::Pack(::flatbuffers::FlatBufferBui auto _test5 = _o->test5.size() ? _fbb.CreateVectorOfStructs(_o->test5) : 0; auto _vector_of_longs = _o->vector_of_longs.size() ? _fbb.CreateVector(_o->vector_of_longs) : 0; auto _vector_of_doubles = _o->vector_of_doubles.size() ? _fbb.CreateVector(_o->vector_of_doubles) : 0; - auto _parent_namespace_test = _o->parent_namespace_test ? CreateInParentNamespace(_fbb, _o->parent_namespace_test.get(), _rehasher) : 0; - auto _vector_of_referrables = _o->vector_of_referrables.size() ? _fbb.CreateVector<::flatbuffers::Offset> (_o->vector_of_referrables.size(), [](size_t i, _VectorArgs *__va) { return CreateReferrable(*__va->__fbb, __va->__o->vector_of_referrables[i].get(), __va->__rehasher); }, &_va ) : 0; + auto _parent_namespace_test = _o->parent_namespace_test ? MyGame::CreateInParentNamespace(_fbb, _o->parent_namespace_test.get(), _rehasher) : 0; + auto _vector_of_referrables = _o->vector_of_referrables.size() ? _fbb.CreateVector<::flatbuffers::Offset> (_o->vector_of_referrables.size(), [](size_t i, _VectorArgs *__va) { return MyGame::Example::CreateReferrable(*__va->__fbb, __va->__o->vector_of_referrables[i].get(), __va->__rehasher); }, &_va ) : 0; auto _single_weak_reference = _rehasher ? static_cast((*_rehasher)(_o->single_weak_reference)) : 0; auto _vector_of_weak_references = _o->vector_of_weak_references.size() ? _fbb.CreateVector(_o->vector_of_weak_references.size(), [](size_t i, _VectorArgs *__va) { return __va->__rehasher ? static_cast((*__va->__rehasher)(__va->__o->vector_of_weak_references[i])) : 0; }, &_va ) : 0; - auto _vector_of_strong_referrables = _o->vector_of_strong_referrables.size() ? _fbb.CreateVector<::flatbuffers::Offset> (_o->vector_of_strong_referrables.size(), [](size_t i, _VectorArgs *__va) { return CreateReferrable(*__va->__fbb, __va->__o->vector_of_strong_referrables[i].get(), __va->__rehasher); }, &_va ) : 0; + auto _vector_of_strong_referrables = _o->vector_of_strong_referrables.size() ? _fbb.CreateVector<::flatbuffers::Offset> (_o->vector_of_strong_referrables.size(), [](size_t i, _VectorArgs *__va) { return MyGame::Example::CreateReferrable(*__va->__fbb, __va->__o->vector_of_strong_referrables[i].get(), __va->__rehasher); }, &_va ) : 0; auto _co_owning_reference = _rehasher ? static_cast((*_rehasher)(_o->co_owning_reference)) : 0; auto _vector_of_co_owning_references = _o->vector_of_co_owning_references.size() ? _fbb.CreateVector(_o->vector_of_co_owning_references.size(), [](size_t i, _VectorArgs *__va) { return __va->__rehasher ? static_cast((*__va->__rehasher)(__va->__o->vector_of_co_owning_references[i].get())) : 0; }, &_va ) : 0; auto _non_owning_reference = _rehasher ? static_cast((*_rehasher)(_o->non_owning_reference)) : 0; @@ -3315,7 +3315,7 @@ inline ::flatbuffers::Offset Monster::Pack(::flatbuffers::FlatBufferBui auto _vector_of_enums = _o->vector_of_enums.size() ? _fbb.CreateVector(_o->vector_of_enums) : 0; auto _signed_enum = _o->signed_enum; auto _testrequirednestedflatbuffer = _o->testrequirednestedflatbuffer.size() ? _fbb.CreateVector(_o->testrequirednestedflatbuffer) : 0; - auto _scalar_key_sorted_tables = _o->scalar_key_sorted_tables.size() ? _fbb.CreateVector<::flatbuffers::Offset> (_o->scalar_key_sorted_tables.size(), [](size_t i, _VectorArgs *__va) { return CreateStat(*__va->__fbb, __va->__o->scalar_key_sorted_tables[i].get(), __va->__rehasher); }, &_va ) : 0; + auto _scalar_key_sorted_tables = _o->scalar_key_sorted_tables.size() ? _fbb.CreateVector<::flatbuffers::Offset> (_o->scalar_key_sorted_tables.size(), [](size_t i, _VectorArgs *__va) { return MyGame::Example::CreateStat(*__va->__fbb, __va->__o->scalar_key_sorted_tables[i].get(), __va->__rehasher); }, &_va ) : 0; auto _native_inline = &_o->native_inline; auto _long_enum_non_enum_default = _o->long_enum_non_enum_default; auto _long_enum_normal_default = _o->long_enum_normal_default; diff --git a/tests/monster_test_generated.h b/tests/monster_test_generated.h index 7c994e5c16..cd57d512e8 100644 --- a/tests/monster_test_generated.h +++ b/tests/monster_test_generated.h @@ -3237,10 +3237,10 @@ inline ::flatbuffers::Offset Monster::Pack(::flatbuffers::FlatBufferBui auto _test = _o->test.Pack(_fbb); auto _test4 = _o->test4.size() ? _fbb.CreateVectorOfStructs(_o->test4) : 0; auto _testarrayofstring = _o->testarrayofstring.size() ? _fbb.CreateVectorOfStrings(_o->testarrayofstring) : 0; - auto _testarrayoftables = _o->testarrayoftables.size() ? _fbb.CreateVector<::flatbuffers::Offset> (_o->testarrayoftables.size(), [](size_t i, _VectorArgs *__va) { return CreateMonster(*__va->__fbb, __va->__o->testarrayoftables[i].get(), __va->__rehasher); }, &_va ) : 0; - auto _enemy = _o->enemy ? CreateMonster(_fbb, _o->enemy.get(), _rehasher) : 0; + auto _testarrayoftables = _o->testarrayoftables.size() ? _fbb.CreateVector<::flatbuffers::Offset> (_o->testarrayoftables.size(), [](size_t i, _VectorArgs *__va) { return MyGame::Example::CreateMonster(*__va->__fbb, __va->__o->testarrayoftables[i].get(), __va->__rehasher); }, &_va ) : 0; + auto _enemy = _o->enemy ? MyGame::Example::CreateMonster(_fbb, _o->enemy.get(), _rehasher) : 0; auto _testnestedflatbuffer = _o->testnestedflatbuffer.size() ? _fbb.CreateVector(_o->testnestedflatbuffer) : 0; - auto _testempty = _o->testempty ? CreateStat(_fbb, _o->testempty.get(), _rehasher) : 0; + auto _testempty = _o->testempty ? MyGame::Example::CreateStat(_fbb, _o->testempty.get(), _rehasher) : 0; auto _testbool = _o->testbool; auto _testhashs32_fnv1 = _o->testhashs32_fnv1; auto _testhashu32_fnv1 = _o->testhashu32_fnv1; @@ -3260,11 +3260,11 @@ inline ::flatbuffers::Offset Monster::Pack(::flatbuffers::FlatBufferBui auto _test5 = _o->test5.size() ? _fbb.CreateVectorOfStructs(_o->test5) : 0; auto _vector_of_longs = _o->vector_of_longs.size() ? _fbb.CreateVector(_o->vector_of_longs) : 0; auto _vector_of_doubles = _o->vector_of_doubles.size() ? _fbb.CreateVector(_o->vector_of_doubles) : 0; - auto _parent_namespace_test = _o->parent_namespace_test ? CreateInParentNamespace(_fbb, _o->parent_namespace_test.get(), _rehasher) : 0; - auto _vector_of_referrables = _o->vector_of_referrables.size() ? _fbb.CreateVector<::flatbuffers::Offset> (_o->vector_of_referrables.size(), [](size_t i, _VectorArgs *__va) { return CreateReferrable(*__va->__fbb, __va->__o->vector_of_referrables[i].get(), __va->__rehasher); }, &_va ) : 0; + auto _parent_namespace_test = _o->parent_namespace_test ? MyGame::CreateInParentNamespace(_fbb, _o->parent_namespace_test.get(), _rehasher) : 0; + auto _vector_of_referrables = _o->vector_of_referrables.size() ? _fbb.CreateVector<::flatbuffers::Offset> (_o->vector_of_referrables.size(), [](size_t i, _VectorArgs *__va) { return MyGame::Example::CreateReferrable(*__va->__fbb, __va->__o->vector_of_referrables[i].get(), __va->__rehasher); }, &_va ) : 0; auto _single_weak_reference = _rehasher ? static_cast((*_rehasher)(_o->single_weak_reference)) : 0; auto _vector_of_weak_references = _o->vector_of_weak_references.size() ? _fbb.CreateVector(_o->vector_of_weak_references.size(), [](size_t i, _VectorArgs *__va) { return __va->__rehasher ? static_cast((*__va->__rehasher)(__va->__o->vector_of_weak_references[i])) : 0; }, &_va ) : 0; - auto _vector_of_strong_referrables = _o->vector_of_strong_referrables.size() ? _fbb.CreateVector<::flatbuffers::Offset> (_o->vector_of_strong_referrables.size(), [](size_t i, _VectorArgs *__va) { return CreateReferrable(*__va->__fbb, __va->__o->vector_of_strong_referrables[i].get(), __va->__rehasher); }, &_va ) : 0; + auto _vector_of_strong_referrables = _o->vector_of_strong_referrables.size() ? _fbb.CreateVector<::flatbuffers::Offset> (_o->vector_of_strong_referrables.size(), [](size_t i, _VectorArgs *__va) { return MyGame::Example::CreateReferrable(*__va->__fbb, __va->__o->vector_of_strong_referrables[i].get(), __va->__rehasher); }, &_va ) : 0; auto _co_owning_reference = _rehasher ? static_cast((*_rehasher)(_o->co_owning_reference)) : 0; auto _vector_of_co_owning_references = _o->vector_of_co_owning_references.size() ? _fbb.CreateVector(_o->vector_of_co_owning_references.size(), [](size_t i, _VectorArgs *__va) { return __va->__rehasher ? static_cast((*__va->__rehasher)(__va->__o->vector_of_co_owning_references[i].get())) : 0; }, &_va ) : 0; auto _non_owning_reference = _rehasher ? static_cast((*_rehasher)(_o->non_owning_reference)) : 0; @@ -3276,7 +3276,7 @@ inline ::flatbuffers::Offset Monster::Pack(::flatbuffers::FlatBufferBui auto _vector_of_enums = _o->vector_of_enums.size() ? _fbb.CreateVectorScalarCast(::flatbuffers::data(_o->vector_of_enums), _o->vector_of_enums.size()) : 0; auto _signed_enum = _o->signed_enum; auto _testrequirednestedflatbuffer = _o->testrequirednestedflatbuffer.size() ? _fbb.CreateVector(_o->testrequirednestedflatbuffer) : 0; - auto _scalar_key_sorted_tables = _o->scalar_key_sorted_tables.size() ? _fbb.CreateVector<::flatbuffers::Offset> (_o->scalar_key_sorted_tables.size(), [](size_t i, _VectorArgs *__va) { return CreateStat(*__va->__fbb, __va->__o->scalar_key_sorted_tables[i].get(), __va->__rehasher); }, &_va ) : 0; + auto _scalar_key_sorted_tables = _o->scalar_key_sorted_tables.size() ? _fbb.CreateVector<::flatbuffers::Offset> (_o->scalar_key_sorted_tables.size(), [](size_t i, _VectorArgs *__va) { return MyGame::Example::CreateStat(*__va->__fbb, __va->__o->scalar_key_sorted_tables[i].get(), __va->__rehasher); }, &_va ) : 0; auto _native_inline = &_o->native_inline; auto _long_enum_non_enum_default = _o->long_enum_non_enum_default; auto _long_enum_normal_default = _o->long_enum_normal_default; 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 91c5e32f17..83ed1c8114 100644 --- a/tests/monster_test_suffix/ext_only/monster_test_generated.hpp +++ b/tests/monster_test_suffix/ext_only/monster_test_generated.hpp @@ -3227,10 +3227,10 @@ inline ::flatbuffers::Offset Monster::Pack(::flatbuffers::FlatBufferBui auto _test = _o->test.Pack(_fbb); auto _test4 = _o->test4.size() ? _fbb.CreateVectorOfStructs(_o->test4) : 0; auto _testarrayofstring = _o->testarrayofstring.size() ? _fbb.CreateVectorOfStrings(_o->testarrayofstring) : 0; - auto _testarrayoftables = _o->testarrayoftables.size() ? _fbb.CreateVector<::flatbuffers::Offset> (_o->testarrayoftables.size(), [](size_t i, _VectorArgs *__va) { return CreateMonster(*__va->__fbb, __va->__o->testarrayoftables[i].get(), __va->__rehasher); }, &_va ) : 0; - auto _enemy = _o->enemy ? CreateMonster(_fbb, _o->enemy.get(), _rehasher) : 0; + auto _testarrayoftables = _o->testarrayoftables.size() ? _fbb.CreateVector<::flatbuffers::Offset> (_o->testarrayoftables.size(), [](size_t i, _VectorArgs *__va) { return MyGame::Example::CreateMonster(*__va->__fbb, __va->__o->testarrayoftables[i].get(), __va->__rehasher); }, &_va ) : 0; + auto _enemy = _o->enemy ? MyGame::Example::CreateMonster(_fbb, _o->enemy.get(), _rehasher) : 0; auto _testnestedflatbuffer = _o->testnestedflatbuffer.size() ? _fbb.CreateVector(_o->testnestedflatbuffer) : 0; - auto _testempty = _o->testempty ? CreateStat(_fbb, _o->testempty.get(), _rehasher) : 0; + auto _testempty = _o->testempty ? MyGame::Example::CreateStat(_fbb, _o->testempty.get(), _rehasher) : 0; auto _testbool = _o->testbool; auto _testhashs32_fnv1 = _o->testhashs32_fnv1; auto _testhashu32_fnv1 = _o->testhashu32_fnv1; @@ -3250,11 +3250,11 @@ inline ::flatbuffers::Offset Monster::Pack(::flatbuffers::FlatBufferBui auto _test5 = _o->test5.size() ? _fbb.CreateVectorOfStructs(_o->test5) : 0; auto _vector_of_longs = _o->vector_of_longs.size() ? _fbb.CreateVector(_o->vector_of_longs) : 0; auto _vector_of_doubles = _o->vector_of_doubles.size() ? _fbb.CreateVector(_o->vector_of_doubles) : 0; - auto _parent_namespace_test = _o->parent_namespace_test ? CreateInParentNamespace(_fbb, _o->parent_namespace_test.get(), _rehasher) : 0; - auto _vector_of_referrables = _o->vector_of_referrables.size() ? _fbb.CreateVector<::flatbuffers::Offset> (_o->vector_of_referrables.size(), [](size_t i, _VectorArgs *__va) { return CreateReferrable(*__va->__fbb, __va->__o->vector_of_referrables[i].get(), __va->__rehasher); }, &_va ) : 0; + auto _parent_namespace_test = _o->parent_namespace_test ? MyGame::CreateInParentNamespace(_fbb, _o->parent_namespace_test.get(), _rehasher) : 0; + auto _vector_of_referrables = _o->vector_of_referrables.size() ? _fbb.CreateVector<::flatbuffers::Offset> (_o->vector_of_referrables.size(), [](size_t i, _VectorArgs *__va) { return MyGame::Example::CreateReferrable(*__va->__fbb, __va->__o->vector_of_referrables[i].get(), __va->__rehasher); }, &_va ) : 0; auto _single_weak_reference = _rehasher ? static_cast((*_rehasher)(_o->single_weak_reference)) : 0; auto _vector_of_weak_references = _o->vector_of_weak_references.size() ? _fbb.CreateVector(_o->vector_of_weak_references.size(), [](size_t i, _VectorArgs *__va) { return __va->__rehasher ? static_cast((*__va->__rehasher)(__va->__o->vector_of_weak_references[i])) : 0; }, &_va ) : 0; - auto _vector_of_strong_referrables = _o->vector_of_strong_referrables.size() ? _fbb.CreateVector<::flatbuffers::Offset> (_o->vector_of_strong_referrables.size(), [](size_t i, _VectorArgs *__va) { return CreateReferrable(*__va->__fbb, __va->__o->vector_of_strong_referrables[i].get(), __va->__rehasher); }, &_va ) : 0; + auto _vector_of_strong_referrables = _o->vector_of_strong_referrables.size() ? _fbb.CreateVector<::flatbuffers::Offset> (_o->vector_of_strong_referrables.size(), [](size_t i, _VectorArgs *__va) { return MyGame::Example::CreateReferrable(*__va->__fbb, __va->__o->vector_of_strong_referrables[i].get(), __va->__rehasher); }, &_va ) : 0; auto _co_owning_reference = _rehasher ? static_cast((*_rehasher)(_o->co_owning_reference)) : 0; auto _vector_of_co_owning_references = _o->vector_of_co_owning_references.size() ? _fbb.CreateVector(_o->vector_of_co_owning_references.size(), [](size_t i, _VectorArgs *__va) { return __va->__rehasher ? static_cast((*__va->__rehasher)(__va->__o->vector_of_co_owning_references[i].get())) : 0; }, &_va ) : 0; auto _non_owning_reference = _rehasher ? static_cast((*_rehasher)(_o->non_owning_reference)) : 0; @@ -3266,7 +3266,7 @@ inline ::flatbuffers::Offset Monster::Pack(::flatbuffers::FlatBufferBui auto _vector_of_enums = _o->vector_of_enums.size() ? _fbb.CreateVectorScalarCast(::flatbuffers::data(_o->vector_of_enums), _o->vector_of_enums.size()) : 0; auto _signed_enum = _o->signed_enum; auto _testrequirednestedflatbuffer = _o->testrequirednestedflatbuffer.size() ? _fbb.CreateVector(_o->testrequirednestedflatbuffer) : 0; - auto _scalar_key_sorted_tables = _o->scalar_key_sorted_tables.size() ? _fbb.CreateVector<::flatbuffers::Offset> (_o->scalar_key_sorted_tables.size(), [](size_t i, _VectorArgs *__va) { return CreateStat(*__va->__fbb, __va->__o->scalar_key_sorted_tables[i].get(), __va->__rehasher); }, &_va ) : 0; + auto _scalar_key_sorted_tables = _o->scalar_key_sorted_tables.size() ? _fbb.CreateVector<::flatbuffers::Offset> (_o->scalar_key_sorted_tables.size(), [](size_t i, _VectorArgs *__va) { return MyGame::Example::CreateStat(*__va->__fbb, __va->__o->scalar_key_sorted_tables[i].get(), __va->__rehasher); }, &_va ) : 0; auto _native_inline = &_o->native_inline; auto _long_enum_non_enum_default = _o->long_enum_non_enum_default; auto _long_enum_normal_default = _o->long_enum_normal_default; 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 91c5e32f17..83ed1c8114 100644 --- a/tests/monster_test_suffix/filesuffix_only/monster_test_suffix.h +++ b/tests/monster_test_suffix/filesuffix_only/monster_test_suffix.h @@ -3227,10 +3227,10 @@ inline ::flatbuffers::Offset Monster::Pack(::flatbuffers::FlatBufferBui auto _test = _o->test.Pack(_fbb); auto _test4 = _o->test4.size() ? _fbb.CreateVectorOfStructs(_o->test4) : 0; auto _testarrayofstring = _o->testarrayofstring.size() ? _fbb.CreateVectorOfStrings(_o->testarrayofstring) : 0; - auto _testarrayoftables = _o->testarrayoftables.size() ? _fbb.CreateVector<::flatbuffers::Offset> (_o->testarrayoftables.size(), [](size_t i, _VectorArgs *__va) { return CreateMonster(*__va->__fbb, __va->__o->testarrayoftables[i].get(), __va->__rehasher); }, &_va ) : 0; - auto _enemy = _o->enemy ? CreateMonster(_fbb, _o->enemy.get(), _rehasher) : 0; + auto _testarrayoftables = _o->testarrayoftables.size() ? _fbb.CreateVector<::flatbuffers::Offset> (_o->testarrayoftables.size(), [](size_t i, _VectorArgs *__va) { return MyGame::Example::CreateMonster(*__va->__fbb, __va->__o->testarrayoftables[i].get(), __va->__rehasher); }, &_va ) : 0; + auto _enemy = _o->enemy ? MyGame::Example::CreateMonster(_fbb, _o->enemy.get(), _rehasher) : 0; auto _testnestedflatbuffer = _o->testnestedflatbuffer.size() ? _fbb.CreateVector(_o->testnestedflatbuffer) : 0; - auto _testempty = _o->testempty ? CreateStat(_fbb, _o->testempty.get(), _rehasher) : 0; + auto _testempty = _o->testempty ? MyGame::Example::CreateStat(_fbb, _o->testempty.get(), _rehasher) : 0; auto _testbool = _o->testbool; auto _testhashs32_fnv1 = _o->testhashs32_fnv1; auto _testhashu32_fnv1 = _o->testhashu32_fnv1; @@ -3250,11 +3250,11 @@ inline ::flatbuffers::Offset Monster::Pack(::flatbuffers::FlatBufferBui auto _test5 = _o->test5.size() ? _fbb.CreateVectorOfStructs(_o->test5) : 0; auto _vector_of_longs = _o->vector_of_longs.size() ? _fbb.CreateVector(_o->vector_of_longs) : 0; auto _vector_of_doubles = _o->vector_of_doubles.size() ? _fbb.CreateVector(_o->vector_of_doubles) : 0; - auto _parent_namespace_test = _o->parent_namespace_test ? CreateInParentNamespace(_fbb, _o->parent_namespace_test.get(), _rehasher) : 0; - auto _vector_of_referrables = _o->vector_of_referrables.size() ? _fbb.CreateVector<::flatbuffers::Offset> (_o->vector_of_referrables.size(), [](size_t i, _VectorArgs *__va) { return CreateReferrable(*__va->__fbb, __va->__o->vector_of_referrables[i].get(), __va->__rehasher); }, &_va ) : 0; + auto _parent_namespace_test = _o->parent_namespace_test ? MyGame::CreateInParentNamespace(_fbb, _o->parent_namespace_test.get(), _rehasher) : 0; + auto _vector_of_referrables = _o->vector_of_referrables.size() ? _fbb.CreateVector<::flatbuffers::Offset> (_o->vector_of_referrables.size(), [](size_t i, _VectorArgs *__va) { return MyGame::Example::CreateReferrable(*__va->__fbb, __va->__o->vector_of_referrables[i].get(), __va->__rehasher); }, &_va ) : 0; auto _single_weak_reference = _rehasher ? static_cast((*_rehasher)(_o->single_weak_reference)) : 0; auto _vector_of_weak_references = _o->vector_of_weak_references.size() ? _fbb.CreateVector(_o->vector_of_weak_references.size(), [](size_t i, _VectorArgs *__va) { return __va->__rehasher ? static_cast((*__va->__rehasher)(__va->__o->vector_of_weak_references[i])) : 0; }, &_va ) : 0; - auto _vector_of_strong_referrables = _o->vector_of_strong_referrables.size() ? _fbb.CreateVector<::flatbuffers::Offset> (_o->vector_of_strong_referrables.size(), [](size_t i, _VectorArgs *__va) { return CreateReferrable(*__va->__fbb, __va->__o->vector_of_strong_referrables[i].get(), __va->__rehasher); }, &_va ) : 0; + auto _vector_of_strong_referrables = _o->vector_of_strong_referrables.size() ? _fbb.CreateVector<::flatbuffers::Offset> (_o->vector_of_strong_referrables.size(), [](size_t i, _VectorArgs *__va) { return MyGame::Example::CreateReferrable(*__va->__fbb, __va->__o->vector_of_strong_referrables[i].get(), __va->__rehasher); }, &_va ) : 0; auto _co_owning_reference = _rehasher ? static_cast((*_rehasher)(_o->co_owning_reference)) : 0; auto _vector_of_co_owning_references = _o->vector_of_co_owning_references.size() ? _fbb.CreateVector(_o->vector_of_co_owning_references.size(), [](size_t i, _VectorArgs *__va) { return __va->__rehasher ? static_cast((*__va->__rehasher)(__va->__o->vector_of_co_owning_references[i].get())) : 0; }, &_va ) : 0; auto _non_owning_reference = _rehasher ? static_cast((*_rehasher)(_o->non_owning_reference)) : 0; @@ -3266,7 +3266,7 @@ inline ::flatbuffers::Offset Monster::Pack(::flatbuffers::FlatBufferBui auto _vector_of_enums = _o->vector_of_enums.size() ? _fbb.CreateVectorScalarCast(::flatbuffers::data(_o->vector_of_enums), _o->vector_of_enums.size()) : 0; auto _signed_enum = _o->signed_enum; auto _testrequirednestedflatbuffer = _o->testrequirednestedflatbuffer.size() ? _fbb.CreateVector(_o->testrequirednestedflatbuffer) : 0; - auto _scalar_key_sorted_tables = _o->scalar_key_sorted_tables.size() ? _fbb.CreateVector<::flatbuffers::Offset> (_o->scalar_key_sorted_tables.size(), [](size_t i, _VectorArgs *__va) { return CreateStat(*__va->__fbb, __va->__o->scalar_key_sorted_tables[i].get(), __va->__rehasher); }, &_va ) : 0; + auto _scalar_key_sorted_tables = _o->scalar_key_sorted_tables.size() ? _fbb.CreateVector<::flatbuffers::Offset> (_o->scalar_key_sorted_tables.size(), [](size_t i, _VectorArgs *__va) { return MyGame::Example::CreateStat(*__va->__fbb, __va->__o->scalar_key_sorted_tables[i].get(), __va->__rehasher); }, &_va ) : 0; auto _native_inline = &_o->native_inline; auto _long_enum_non_enum_default = _o->long_enum_non_enum_default; auto _long_enum_normal_default = _o->long_enum_normal_default; diff --git a/tests/monster_test_suffix/monster_test_suffix.hpp b/tests/monster_test_suffix/monster_test_suffix.hpp index 91c5e32f17..83ed1c8114 100644 --- a/tests/monster_test_suffix/monster_test_suffix.hpp +++ b/tests/monster_test_suffix/monster_test_suffix.hpp @@ -3227,10 +3227,10 @@ inline ::flatbuffers::Offset Monster::Pack(::flatbuffers::FlatBufferBui auto _test = _o->test.Pack(_fbb); auto _test4 = _o->test4.size() ? _fbb.CreateVectorOfStructs(_o->test4) : 0; auto _testarrayofstring = _o->testarrayofstring.size() ? _fbb.CreateVectorOfStrings(_o->testarrayofstring) : 0; - auto _testarrayoftables = _o->testarrayoftables.size() ? _fbb.CreateVector<::flatbuffers::Offset> (_o->testarrayoftables.size(), [](size_t i, _VectorArgs *__va) { return CreateMonster(*__va->__fbb, __va->__o->testarrayoftables[i].get(), __va->__rehasher); }, &_va ) : 0; - auto _enemy = _o->enemy ? CreateMonster(_fbb, _o->enemy.get(), _rehasher) : 0; + auto _testarrayoftables = _o->testarrayoftables.size() ? _fbb.CreateVector<::flatbuffers::Offset> (_o->testarrayoftables.size(), [](size_t i, _VectorArgs *__va) { return MyGame::Example::CreateMonster(*__va->__fbb, __va->__o->testarrayoftables[i].get(), __va->__rehasher); }, &_va ) : 0; + auto _enemy = _o->enemy ? MyGame::Example::CreateMonster(_fbb, _o->enemy.get(), _rehasher) : 0; auto _testnestedflatbuffer = _o->testnestedflatbuffer.size() ? _fbb.CreateVector(_o->testnestedflatbuffer) : 0; - auto _testempty = _o->testempty ? CreateStat(_fbb, _o->testempty.get(), _rehasher) : 0; + auto _testempty = _o->testempty ? MyGame::Example::CreateStat(_fbb, _o->testempty.get(), _rehasher) : 0; auto _testbool = _o->testbool; auto _testhashs32_fnv1 = _o->testhashs32_fnv1; auto _testhashu32_fnv1 = _o->testhashu32_fnv1; @@ -3250,11 +3250,11 @@ inline ::flatbuffers::Offset Monster::Pack(::flatbuffers::FlatBufferBui auto _test5 = _o->test5.size() ? _fbb.CreateVectorOfStructs(_o->test5) : 0; auto _vector_of_longs = _o->vector_of_longs.size() ? _fbb.CreateVector(_o->vector_of_longs) : 0; auto _vector_of_doubles = _o->vector_of_doubles.size() ? _fbb.CreateVector(_o->vector_of_doubles) : 0; - auto _parent_namespace_test = _o->parent_namespace_test ? CreateInParentNamespace(_fbb, _o->parent_namespace_test.get(), _rehasher) : 0; - auto _vector_of_referrables = _o->vector_of_referrables.size() ? _fbb.CreateVector<::flatbuffers::Offset> (_o->vector_of_referrables.size(), [](size_t i, _VectorArgs *__va) { return CreateReferrable(*__va->__fbb, __va->__o->vector_of_referrables[i].get(), __va->__rehasher); }, &_va ) : 0; + auto _parent_namespace_test = _o->parent_namespace_test ? MyGame::CreateInParentNamespace(_fbb, _o->parent_namespace_test.get(), _rehasher) : 0; + auto _vector_of_referrables = _o->vector_of_referrables.size() ? _fbb.CreateVector<::flatbuffers::Offset> (_o->vector_of_referrables.size(), [](size_t i, _VectorArgs *__va) { return MyGame::Example::CreateReferrable(*__va->__fbb, __va->__o->vector_of_referrables[i].get(), __va->__rehasher); }, &_va ) : 0; auto _single_weak_reference = _rehasher ? static_cast((*_rehasher)(_o->single_weak_reference)) : 0; auto _vector_of_weak_references = _o->vector_of_weak_references.size() ? _fbb.CreateVector(_o->vector_of_weak_references.size(), [](size_t i, _VectorArgs *__va) { return __va->__rehasher ? static_cast((*__va->__rehasher)(__va->__o->vector_of_weak_references[i])) : 0; }, &_va ) : 0; - auto _vector_of_strong_referrables = _o->vector_of_strong_referrables.size() ? _fbb.CreateVector<::flatbuffers::Offset> (_o->vector_of_strong_referrables.size(), [](size_t i, _VectorArgs *__va) { return CreateReferrable(*__va->__fbb, __va->__o->vector_of_strong_referrables[i].get(), __va->__rehasher); }, &_va ) : 0; + auto _vector_of_strong_referrables = _o->vector_of_strong_referrables.size() ? _fbb.CreateVector<::flatbuffers::Offset> (_o->vector_of_strong_referrables.size(), [](size_t i, _VectorArgs *__va) { return MyGame::Example::CreateReferrable(*__va->__fbb, __va->__o->vector_of_strong_referrables[i].get(), __va->__rehasher); }, &_va ) : 0; auto _co_owning_reference = _rehasher ? static_cast((*_rehasher)(_o->co_owning_reference)) : 0; auto _vector_of_co_owning_references = _o->vector_of_co_owning_references.size() ? _fbb.CreateVector(_o->vector_of_co_owning_references.size(), [](size_t i, _VectorArgs *__va) { return __va->__rehasher ? static_cast((*__va->__rehasher)(__va->__o->vector_of_co_owning_references[i].get())) : 0; }, &_va ) : 0; auto _non_owning_reference = _rehasher ? static_cast((*_rehasher)(_o->non_owning_reference)) : 0; @@ -3266,7 +3266,7 @@ inline ::flatbuffers::Offset Monster::Pack(::flatbuffers::FlatBufferBui auto _vector_of_enums = _o->vector_of_enums.size() ? _fbb.CreateVectorScalarCast(::flatbuffers::data(_o->vector_of_enums), _o->vector_of_enums.size()) : 0; auto _signed_enum = _o->signed_enum; auto _testrequirednestedflatbuffer = _o->testrequirednestedflatbuffer.size() ? _fbb.CreateVector(_o->testrequirednestedflatbuffer) : 0; - auto _scalar_key_sorted_tables = _o->scalar_key_sorted_tables.size() ? _fbb.CreateVector<::flatbuffers::Offset> (_o->scalar_key_sorted_tables.size(), [](size_t i, _VectorArgs *__va) { return CreateStat(*__va->__fbb, __va->__o->scalar_key_sorted_tables[i].get(), __va->__rehasher); }, &_va ) : 0; + auto _scalar_key_sorted_tables = _o->scalar_key_sorted_tables.size() ? _fbb.CreateVector<::flatbuffers::Offset> (_o->scalar_key_sorted_tables.size(), [](size_t i, _VectorArgs *__va) { return MyGame::Example::CreateStat(*__va->__fbb, __va->__o->scalar_key_sorted_tables[i].get(), __va->__rehasher); }, &_va ) : 0; auto _native_inline = &_o->native_inline; auto _long_enum_non_enum_default = _o->long_enum_non_enum_default; auto _long_enum_normal_default = _o->long_enum_normal_default; diff --git a/tests/namespace_test/namespace_test2_generated.h b/tests/namespace_test/namespace_test2_generated.h index 416c9ffbcd..9c7dd1f858 100644 --- a/tests/namespace_test/namespace_test2_generated.h +++ b/tests/namespace_test/namespace_test2_generated.h @@ -419,7 +419,7 @@ inline ::flatbuffers::Offset TableInFirstNS::Pack(::flatbuffers: (void)_rehasher; (void)_o; struct _VectorArgs { ::flatbuffers::FlatBufferBuilder *__fbb; const TableInFirstNST* __o; const ::flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; - auto _foo_table = _o->foo_table ? CreateTableInNestedNS(_fbb, _o->foo_table.get(), _rehasher) : 0; + auto _foo_table = _o->foo_table ? NamespaceA::NamespaceB::CreateTableInNestedNS(_fbb, _o->foo_table.get(), _rehasher) : 0; auto _foo_enum = _o->foo_enum; auto _foo_union_type = _o->foo_union.type; auto _foo_union = _o->foo_union.Pack(_fbb); @@ -481,8 +481,8 @@ inline ::flatbuffers::Offset TableInC::Pack(::flatbuffers::FlatBufferB (void)_rehasher; (void)_o; struct _VectorArgs { ::flatbuffers::FlatBufferBuilder *__fbb; const TableInCT* __o; const ::flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; - auto _refer_to_a1 = _o->refer_to_a1 ? CreateTableInFirstNS(_fbb, _o->refer_to_a1.get(), _rehasher) : 0; - auto _refer_to_a2 = _o->refer_to_a2 ? CreateSecondTableInA(_fbb, _o->refer_to_a2.get(), _rehasher) : 0; + auto _refer_to_a1 = _o->refer_to_a1 ? NamespaceA::CreateTableInFirstNS(_fbb, _o->refer_to_a1.get(), _rehasher) : 0; + auto _refer_to_a2 = _o->refer_to_a2 ? NamespaceA::CreateSecondTableInA(_fbb, _o->refer_to_a2.get(), _rehasher) : 0; return NamespaceC::CreateTableInC( _fbb, _refer_to_a1, @@ -533,7 +533,7 @@ inline ::flatbuffers::Offset SecondTableInA::Pack(::flatbuffers: (void)_rehasher; (void)_o; struct _VectorArgs { ::flatbuffers::FlatBufferBuilder *__fbb; const SecondTableInAT* __o; const ::flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; - auto _refer_to_c = _o->refer_to_c ? CreateTableInC(_fbb, _o->refer_to_c.get(), _rehasher) : 0; + auto _refer_to_c = _o->refer_to_c ? NamespaceC::CreateTableInC(_fbb, _o->refer_to_c.get(), _rehasher) : 0; return NamespaceA::CreateSecondTableInA( _fbb, _refer_to_c); diff --git a/tests/native_type_test_generated.h b/tests/native_type_test_generated.h index a401e72649..d7ea8093b5 100644 --- a/tests/native_type_test_generated.h +++ b/tests/native_type_test_generated.h @@ -449,8 +449,8 @@ inline ::flatbuffers::Offset ApplicationData::Pack(::flatbuffer auto _vectors_alt = _o->vectors_alt.size() ? _fbb.CreateVectorOfNativeStructs(_o->vectors_alt, ::flatbuffers::PackVector3DAlt) : 0; auto _position = Geometry::Vector3D{}; if (_o->position) _position = ::flatbuffers::Pack(*_o->position); auto _position_inline = ::flatbuffers::Pack(_o->position_inline); - auto _matrix = _o->matrix ? CreateMatrix(_fbb, _o->matrix.get(), _rehasher) : 0; - auto _matrices = _o->matrices.size() ? _fbb.CreateVector<::flatbuffers::Offset> (_o->matrices.size(), [](size_t i, _VectorArgs *__va) { return CreateMatrix(*__va->__fbb, __va->__o->matrices[i].get(), __va->__rehasher); }, &_va ) : 0; + auto _matrix = _o->matrix ? Geometry::CreateMatrix(_fbb, _o->matrix.get(), _rehasher) : 0; + auto _matrices = _o->matrices.size() ? _fbb.CreateVector<::flatbuffers::Offset> (_o->matrices.size(), [](size_t i, _VectorArgs *__va) { return Geometry::CreateMatrix(*__va->__fbb, __va->__o->matrices[i].get(), __va->__rehasher); }, &_va ) : 0; return Geometry::CreateApplicationData( _fbb, _vectors, diff --git a/tests/test.cpp b/tests/test.cpp index 80437a86a5..68e8e68391 100644 --- a/tests/test.cpp +++ b/tests/test.cpp @@ -34,6 +34,7 @@ #include "third_party/absl/container/flat_hash_set.h" #endif #include "alignment_test.h" +#include "cross_namespace_pack_test_generated.h" #include "default_vectors_strings_test.h" #include "evolution_test.h" #include "flatbuffers/flatbuffers.h" @@ -54,7 +55,6 @@ #include "reflection_test.h" #include "tests/union_vector/union_vector_generated.h" #include "union_underlying_type_test_generated.h" -#include "cross_namespace_pack_test_generated.h" #if !defined(_MSC_VER) || _MSC_VER >= 1700 #include "tests/arrays_test_generated.h" #endif @@ -1738,7 +1738,7 @@ void CrossNamespacePackTest() { flatbuffers::FlatBufferBuilder fbb; fbb.Finish(foo::Consumer::Pack(fbb, &consumer)); - auto *packed = flatbuffers::GetRoot(fbb.GetBufferPointer()); + auto* packed = flatbuffers::GetRoot(fbb.GetBufferPointer()); auto unpacked = packed->UnPack(); TEST_EQ(unpacked->c1->value, 42); TEST_EQ(unpacked->c2.size(), 1); From 9f5512d466ef85c80ebb349f72038b65ad837ffc Mon Sep 17 00:00:00 2001 From: tmimmanuel <14046872+tmimmanuel@users.noreply.github.com> Date: Wed, 11 Mar 2026 03:05:32 +0100 Subject: [PATCH 3/3] Add cross_namespace_pack_test to Bazel build --- tests/BUILD.bazel | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/tests/BUILD.bazel b/tests/BUILD.bazel index 6a7373aaa8..72d746fbef 100644 --- a/tests/BUILD.bazel +++ b/tests/BUILD.bazel @@ -52,6 +52,7 @@ cc_test( "monster_test.cpp", "monster_test.h", "monster_test_bfbs_generated.h", + "cross_namespace_pack_test_generated.h", "namespace_test/namespace_test1_generated.h", "namespace_test/namespace_test2_generated.h", "native_inline_table_test_generated.h", @@ -136,6 +137,7 @@ cc_test( deps = [ ":alignment_test_cc_fbs", ":arrays_test_cc_fbs", + ":cross_namespace_pack_test_cc_fbs", ":default_vectors_strings_test_cc_fbs", ":monster_extra_cc_fbs", ":monster_test_cc_fbs", @@ -261,6 +263,17 @@ flatbuffer_cc_library( ], ) +flatbuffer_cc_library( + name = "cross_namespace_pack_test_cc_fbs", + srcs = ["cross_namespace_pack_test.fbs"], + flatc_args = [ + "--gen-object-api", + "--gen-mutable", + "--gen-compare", + "--reflect-names", + ], +) + flatbuffer_cc_library( name = "native_type_test_cc_fbs", srcs = ["native_type_test.fbs"],