Support nested_flatbuffer attribute when parsing bfbs schema (#5448)
authorll-antn <42381407+ll-antn@users.noreply.github.com>
Fri, 26 Jul 2019 16:13:11 +0000 (19:13 +0300)
committerWouter van Oortmerssen <aardappel@gmail.com>
Fri, 26 Jul 2019 16:13:11 +0000 (09:13 -0700)
src/idl_parser.cpp
tests/monsterdata_test.golden

index 14d3acd..21443a4 100644 (file)
@@ -3131,7 +3131,7 @@ Offset<reflection::Field> FieldDef::Serialize(FlatBufferBuilder *builder,
 }
 
 bool FieldDef::Deserialize(Parser &parser, const reflection::Field *field) {
-  name = parser.UnqualifiedName(field->name()->str());
+  name = field->name()->str();
   defined_namespace = parser.current_namespace_;
   if (!value.type.Deserialize(parser, field->type()))
     return false;
@@ -3158,6 +3158,12 @@ bool FieldDef::Deserialize(Parser &parser, const reflection::Field *field) {
         value.type.element != BASE_TYPE_UCHAR)
       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());
   return true;
 }
index ab40154..4bead97 100644 (file)
@@ -56,6 +56,9 @@
       name: "Wilma"
     }
   ],
+  testnestedflatbuffer: {
+    name: "NestedMonster"
+  },
   testbool: true,
   testhashs32_fnv1: -579221183,
   testhashu32_fnv1: 3715746113,