mirror of
https://github.com/google/flatbuffers.git
synced 2026-07-02 15:08:20 +00:00
Added tracking of order of types declared.
Change-Id: Iade313c99f119dcf1619674260648a33f61dc030
This commit is contained in:
@@ -578,6 +578,7 @@ private:
|
|||||||
BaseType baseType);
|
BaseType baseType);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
SymbolTable<Type> types_;
|
||||||
SymbolTable<StructDef> structs_;
|
SymbolTable<StructDef> structs_;
|
||||||
SymbolTable<EnumDef> enums_;
|
SymbolTable<EnumDef> enums_;
|
||||||
SymbolTable<ServiceDef> services_;
|
SymbolTable<ServiceDef> services_;
|
||||||
|
|||||||
@@ -1314,6 +1314,8 @@ CheckedError Parser::ParseEnum(bool is_union, EnumDef **dest) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (dest) *dest = &enum_def;
|
if (dest) *dest = &enum_def;
|
||||||
|
types_.Add(namespaces_.back()->GetFullyQualifiedName(enum_def.name),
|
||||||
|
new Type(BASE_TYPE_UNION, nullptr, &enum_def));
|
||||||
return NoError();
|
return NoError();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1419,6 +1421,8 @@ CheckedError Parser::ParseDecl() {
|
|||||||
ECHECK(CheckClash(fields, struct_def, "_byte_vector", BASE_TYPE_STRING));
|
ECHECK(CheckClash(fields, struct_def, "_byte_vector", BASE_TYPE_STRING));
|
||||||
ECHECK(CheckClash(fields, struct_def, "ByteVector", BASE_TYPE_STRING));
|
ECHECK(CheckClash(fields, struct_def, "ByteVector", BASE_TYPE_STRING));
|
||||||
EXPECT('}');
|
EXPECT('}');
|
||||||
|
types_.Add(namespaces_.back()->GetFullyQualifiedName(struct_def->name),
|
||||||
|
new Type(BASE_TYPE_STRUCT, struct_def, nullptr));
|
||||||
return NoError();
|
return NoError();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -266,8 +266,8 @@ inline bool VerifyCharacterVector(flatbuffers::Verifier &verifier, const flatbuf
|
|||||||
if (values->size() != types->size()) return false;
|
if (values->size() != types->size()) return false;
|
||||||
for (flatbuffers::uoffset_t i = 0; i < values->size(); ++i) {
|
for (flatbuffers::uoffset_t i = 0; i < values->size(); ++i) {
|
||||||
if (!VerifyCharacter(
|
if (!VerifyCharacter(
|
||||||
verifier, values->Get(i), types->GetEnum<Character>(i))) {
|
verifier, values->Get(i), types->GetEnum<Character>(i))) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
Reference in New Issue
Block a user