mirror of
https://github.com/google/flatbuffers.git
synced 2026-06-29 21:12:00 +00:00
Add namespace qualification to union types (#5666)
This commit is contained in:
committed by
Wouter van Oortmerssen
parent
eddebec1b6
commit
2790fee257
@@ -227,7 +227,7 @@ struct MonsterT : public flatbuffers::NativeTable {
|
|||||||
std::vector<uint8_t> inventory;
|
std::vector<uint8_t> inventory;
|
||||||
MyGame::Sample::Color color;
|
MyGame::Sample::Color color;
|
||||||
std::vector<flatbuffers::unique_ptr<MyGame::Sample::WeaponT>> weapons;
|
std::vector<flatbuffers::unique_ptr<MyGame::Sample::WeaponT>> weapons;
|
||||||
EquipmentUnion equipped;
|
MyGame::Sample::EquipmentUnion equipped;
|
||||||
std::vector<MyGame::Sample::Vec3> path;
|
std::vector<MyGame::Sample::Vec3> path;
|
||||||
MonsterT()
|
MonsterT()
|
||||||
: mana(150),
|
: mana(150),
|
||||||
@@ -578,7 +578,7 @@ inline void Monster::UnPackTo(MonsterT *_o, const flatbuffers::resolver_function
|
|||||||
{ auto _e = color(); _o->color = _e; }
|
{ 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<MyGame::Sample::WeaponT>(_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++) { _o->weapons[_i] = flatbuffers::unique_ptr<MyGame::Sample::WeaponT>(_e->Get(_i)->UnPack(_resolver)); } } }
|
||||||
{ auto _e = equipped_type(); _o->equipped.type = _e; }
|
{ auto _e = equipped_type(); _o->equipped.type = _e; }
|
||||||
{ auto _e = equipped(); if (_e) _o->equipped.value = EquipmentUnion::UnPack(_e, equipped_type(), _resolver); }
|
{ 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); } } }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -693,7 +693,8 @@ class CppGenerator : public BaseGenerator {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
case BASE_TYPE_UNION: {
|
case BASE_TYPE_UNION: {
|
||||||
return type.enum_def->name + "Union";
|
auto type_name = WrapInNameSpace(*type.enum_def);
|
||||||
|
return type_name + "Union";
|
||||||
}
|
}
|
||||||
default: {
|
default: {
|
||||||
return GenTypeBasic(type, true);
|
return GenTypeBasic(type, true);
|
||||||
@@ -2259,7 +2260,8 @@ class CppGenerator : public BaseGenerator {
|
|||||||
std::string GenUnionUnpackVal(const FieldDef &afield,
|
std::string GenUnionUnpackVal(const FieldDef &afield,
|
||||||
const char *vec_elem_access,
|
const char *vec_elem_access,
|
||||||
const char *vec_type_access) {
|
const char *vec_type_access) {
|
||||||
return afield.value.type.enum_def->name + "Union::UnPack(" + "_e" +
|
auto type_name = WrapInNameSpace(*afield.value.type.enum_def);
|
||||||
|
return type_name + "Union::UnPack(" + "_e" +
|
||||||
vec_elem_access + ", " +
|
vec_elem_access + ", " +
|
||||||
EscapeKeyword(afield.name + UnionTypeFieldSuffix()) + "()" +
|
EscapeKeyword(afield.name + UnionTypeFieldSuffix()) + "()" +
|
||||||
vec_type_access + ", _resolver)";
|
vec_type_access + ", _resolver)";
|
||||||
|
|||||||
@@ -1136,7 +1136,7 @@ struct MonsterT : public flatbuffers::NativeTable {
|
|||||||
std::string name;
|
std::string name;
|
||||||
std::vector<uint8_t> inventory;
|
std::vector<uint8_t> inventory;
|
||||||
MyGame::Example::Color color;
|
MyGame::Example::Color color;
|
||||||
AnyUnion test;
|
MyGame::Example::AnyUnion test;
|
||||||
std::vector<MyGame::Example::Test> test4;
|
std::vector<MyGame::Example::Test> test4;
|
||||||
std::vector<std::string> testarrayofstring;
|
std::vector<std::string> testarrayofstring;
|
||||||
std::vector<flatbuffers::unique_ptr<MyGame::Example::MonsterT>> testarrayoftables;
|
std::vector<flatbuffers::unique_ptr<MyGame::Example::MonsterT>> testarrayoftables;
|
||||||
@@ -1171,8 +1171,8 @@ struct MonsterT : public flatbuffers::NativeTable {
|
|||||||
std::vector<flatbuffers::unique_ptr<ReferrableT>> vector_of_co_owning_references;
|
std::vector<flatbuffers::unique_ptr<ReferrableT>> vector_of_co_owning_references;
|
||||||
ReferrableT *non_owning_reference;
|
ReferrableT *non_owning_reference;
|
||||||
std::vector<ReferrableT *> vector_of_non_owning_references;
|
std::vector<ReferrableT *> vector_of_non_owning_references;
|
||||||
AnyUniqueAliasesUnion any_unique;
|
MyGame::Example::AnyUniqueAliasesUnion any_unique;
|
||||||
AnyAmbiguousAliasesUnion any_ambiguous;
|
MyGame::Example::AnyAmbiguousAliasesUnion any_ambiguous;
|
||||||
std::vector<MyGame::Example::Color> vector_of_enums;
|
std::vector<MyGame::Example::Color> vector_of_enums;
|
||||||
MyGame::Example::Race signed_enum;
|
MyGame::Example::Race signed_enum;
|
||||||
MonsterT()
|
MonsterT()
|
||||||
@@ -2558,7 +2558,7 @@ inline void Monster::UnPackTo(MonsterT *_o, const flatbuffers::resolver_function
|
|||||||
{ auto _e = inventory(); if (_e) { _o->inventory.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->inventory[_i] = _e->Get(_i); } } }
|
{ auto _e = inventory(); if (_e) { _o->inventory.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->inventory[_i] = _e->Get(_i); } } }
|
||||||
{ auto _e = color(); _o->color = _e; }
|
{ auto _e = color(); _o->color = _e; }
|
||||||
{ auto _e = test_type(); _o->test.type = _e; }
|
{ auto _e = test_type(); _o->test.type = _e; }
|
||||||
{ auto _e = test(); if (_e) _o->test.value = AnyUnion::UnPack(_e, test_type(), _resolver); }
|
{ 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 = 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 = 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<MyGame::Example::MonsterT>(_e->Get(_i)->UnPack(_resolver)); } } }
|
{ 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<MyGame::Example::MonsterT>(_e->Get(_i)->UnPack(_resolver)); } } }
|
||||||
@@ -2601,9 +2601,9 @@ if (_resolver) (*_resolver)(reinterpret_cast<void **>(&_o->non_owning_reference)
|
|||||||
{ 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
|
{ 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<void **>(&_o->vector_of_non_owning_references[_i]), static_cast<flatbuffers::hash_value_t>(_e->Get(_i))); else _o->vector_of_non_owning_references[_i] = nullptr; } } }
|
if (_resolver) (*_resolver)(reinterpret_cast<void **>(&_o->vector_of_non_owning_references[_i]), static_cast<flatbuffers::hash_value_t>(_e->Get(_i))); else _o->vector_of_non_owning_references[_i] = nullptr; } } }
|
||||||
{ auto _e = any_unique_type(); _o->any_unique.type = _e; }
|
{ auto _e = any_unique_type(); _o->any_unique.type = _e; }
|
||||||
{ auto _e = any_unique(); if (_e) _o->any_unique.value = AnyUniqueAliasesUnion::UnPack(_e, any_unique_type(), _resolver); }
|
{ 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_type(); _o->any_ambiguous.type = _e; }
|
||||||
{ auto _e = any_ambiguous(); if (_e) _o->any_ambiguous.value = AnyAmbiguousAliasesUnion::UnPack(_e, any_ambiguous_type(), _resolver); }
|
{ 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<MyGame::Example::Color>(_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<MyGame::Example::Color>(_e->Get(_i)); } } }
|
||||||
{ auto _e = signed_enum(); _o->signed_enum = _e; }
|
{ auto _e = signed_enum(); _o->signed_enum = _e; }
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user