Support nested_flatbuffer attribute when parsing bfbs schema (#5448)

This commit is contained in:
ll-antn
2019-07-26 19:13:11 +03:00
committed by Wouter van Oortmerssen
parent b632061eff
commit 09dea79a22
2 changed files with 10 additions and 1 deletions

View File

@@ -3131,7 +3131,7 @@ Offset<reflection::Field> FieldDef::Serialize(FlatBufferBuilder *builder,
} }
bool FieldDef::Deserialize(Parser &parser, const reflection::Field *field) { bool FieldDef::Deserialize(Parser &parser, const reflection::Field *field) {
name = parser.UnqualifiedName(field->name()->str()); name = field->name()->str();
defined_namespace = parser.current_namespace_; defined_namespace = parser.current_namespace_;
if (!value.type.Deserialize(parser, field->type())) if (!value.type.Deserialize(parser, field->type()))
return false; return false;
@@ -3158,6 +3158,12 @@ bool FieldDef::Deserialize(Parser &parser, const reflection::Field *field) {
value.type.element != BASE_TYPE_UCHAR) value.type.element != BASE_TYPE_UCHAR)
return false; return false;
} }
if (auto nested = attributes.Lookup("nested_flatbuffer")) {
auto nested_qualified_name =
parser.current_namespace_->GetFullyQualifiedName(nested->constant);
nested_flatbuffer = parser.LookupStruct(nested_qualified_name);
if (!nested_flatbuffer) return false;
}
DeserializeDoc(doc_comment, field->documentation()); DeserializeDoc(doc_comment, field->documentation());
return true; return true;
} }

View File

@@ -56,6 +56,9 @@
name: "Wilma" name: "Wilma"
} }
], ],
testnestedflatbuffer: {
name: "NestedMonster"
},
testbool: true, testbool: true,
testhashs32_fnv1: -579221183, testhashs32_fnv1: -579221183,
testhashu32_fnv1: 3715746113, testhashu32_fnv1: 3715746113,