diff --git a/goldens/cpp/basic_generated.h b/goldens/cpp/basic_generated.h index 2c5391fd848..f0fd80258f3 100644 --- a/goldens/cpp/basic_generated.h +++ b/goldens/cpp/basic_generated.h @@ -30,7 +30,8 @@ struct Galaxy FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table { int64_t num_stars() const { return GetField(VT_NUM_STARS, 0); } - bool Verify(::flatbuffers::Verifier &verifier) const { + template + bool Verify(::flatbuffers::VerifierTemplate &verifier) const { return VerifyTableStart(verifier) && VerifyField(verifier, VT_NUM_STARS, 8) && verifier.EndTable(); @@ -75,7 +76,8 @@ struct Universe FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table { const ::flatbuffers::Vector<::flatbuffers::Offset> *galaxies() const { return GetPointer> *>(VT_GALAXIES); } - bool Verify(::flatbuffers::Verifier &verifier) const { + template + bool Verify(::flatbuffers::VerifierTemplate &verifier) const { return VerifyTableStart(verifier) && VerifyField(verifier, VT_AGE, 8) && VerifyOffset(verifier, VT_GALAXIES) && @@ -135,14 +137,16 @@ inline const flatbuffers::goldens::Universe *GetSizePrefixedUniverse(const void return ::flatbuffers::GetSizePrefixedRoot(buf); } +template inline bool VerifyUniverseBuffer( - ::flatbuffers::Verifier &verifier) { - return verifier.VerifyBuffer(nullptr); + ::flatbuffers::VerifierTemplate &verifier) { + return verifier.template VerifyBuffer(nullptr); } +template inline bool VerifySizePrefixedUniverseBuffer( - ::flatbuffers::Verifier &verifier) { - return verifier.VerifySizePrefixedBuffer(nullptr); + ::flatbuffers::VerifierTemplate &verifier) { + return verifier.template VerifySizePrefixedBuffer(nullptr); } inline void FinishUniverseBuffer( diff --git a/include/flatbuffers/flex_flat_util.h b/include/flatbuffers/flex_flat_util.h index c02e90fea1c..70c0a45860b 100644 --- a/include/flatbuffers/flex_flat_util.h +++ b/include/flatbuffers/flex_flat_util.h @@ -23,9 +23,10 @@ namespace flexbuffers { // Verifies the `nested` flexbuffer within a flatbuffer vector is valid. +template inline bool VerifyNestedFlexBuffer( const flatbuffers::Vector* const nested, - flatbuffers::Verifier& verifier) { + flatbuffers::VerifierTemplate& verifier) { if (!nested) return true; return verifier.Check(flexbuffers::VerifyBuffer( nested->data(), nested->size(), verifier.GetFlexReuseTracker())); diff --git a/include/flatbuffers/reflection_generated.h b/include/flatbuffers/reflection_generated.h index 5c2ab09b256..9a9ed6b9b2b 100644 --- a/include/flatbuffers/reflection_generated.h +++ b/include/flatbuffers/reflection_generated.h @@ -196,7 +196,8 @@ struct Type FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table { uint32_t element_size() const { return GetField(VT_ELEMENT_SIZE, 0); } - bool Verify(::flatbuffers::Verifier &verifier) const { + template + bool Verify(::flatbuffers::VerifierTemplate &verifier) const { return VerifyTableStart(verifier) && VerifyField(verifier, VT_BASE_TYPE, 1) && VerifyField(verifier, VT_ELEMENT, 1) && @@ -283,7 +284,8 @@ struct KeyValue FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table { const ::flatbuffers::String *value() const { return GetPointer(VT_VALUE); } - bool Verify(::flatbuffers::Verifier &verifier) const { + template + bool Verify(::flatbuffers::VerifierTemplate &verifier) const { return VerifyTableStart(verifier) && VerifyOffsetRequired(verifier, VT_KEY) && verifier.VerifyString(key()) && @@ -367,7 +369,8 @@ struct EnumVal FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table { const ::flatbuffers::Vector<::flatbuffers::Offset> *attributes() const { return GetPointer> *>(VT_ATTRIBUTES); } - bool Verify(::flatbuffers::Verifier &verifier) const { + template + bool Verify(::flatbuffers::VerifierTemplate &verifier) const { return VerifyTableStart(verifier) && VerifyOffsetRequired(verifier, VT_NAME) && verifier.VerifyString(name()) && @@ -495,7 +498,8 @@ struct Enum FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table { const ::flatbuffers::String *declaration_file() const { return GetPointer(VT_DECLARATION_FILE); } - bool Verify(::flatbuffers::Verifier &verifier) const { + template + bool Verify(::flatbuffers::VerifierTemplate &verifier) const { return VerifyTableStart(verifier) && VerifyOffsetRequired(verifier, VT_NAME) && verifier.VerifyString(name()) && @@ -675,7 +679,8 @@ struct Field FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table { bool offset64() const { return GetField(VT_OFFSET64, 0) != 0; } - bool Verify(::flatbuffers::Verifier &verifier) const { + template + bool Verify(::flatbuffers::VerifierTemplate &verifier) const { return VerifyTableStart(verifier) && VerifyOffsetRequired(verifier, VT_NAME) && verifier.VerifyString(name()) && @@ -880,7 +885,8 @@ struct Object FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table { const ::flatbuffers::String *declaration_file() const { return GetPointer(VT_DECLARATION_FILE); } - bool Verify(::flatbuffers::Verifier &verifier) const { + template + bool Verify(::flatbuffers::VerifierTemplate &verifier) const { return VerifyTableStart(verifier) && VerifyOffsetRequired(verifier, VT_NAME) && verifier.VerifyString(name()) && @@ -1028,7 +1034,8 @@ struct RPCCall FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table { const ::flatbuffers::Vector<::flatbuffers::Offset<::flatbuffers::String>> *documentation() const { return GetPointer> *>(VT_DOCUMENTATION); } - bool Verify(::flatbuffers::Verifier &verifier) const { + template + bool Verify(::flatbuffers::VerifierTemplate &verifier) const { return VerifyTableStart(verifier) && VerifyOffsetRequired(verifier, VT_NAME) && verifier.VerifyString(name()) && @@ -1151,7 +1158,8 @@ struct Service FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table { const ::flatbuffers::String *declaration_file() const { return GetPointer(VT_DECLARATION_FILE); } - bool Verify(::flatbuffers::Verifier &verifier) const { + template + bool Verify(::flatbuffers::VerifierTemplate &verifier) const { return VerifyTableStart(verifier) && VerifyOffsetRequired(verifier, VT_NAME) && verifier.VerifyString(name()) && @@ -1267,7 +1275,8 @@ struct SchemaFile FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table { const ::flatbuffers::Vector<::flatbuffers::Offset<::flatbuffers::String>> *included_filenames() const { return GetPointer> *>(VT_INCLUDED_FILENAMES); } - bool Verify(::flatbuffers::Verifier &verifier) const { + template + bool Verify(::flatbuffers::VerifierTemplate &verifier) const { return VerifyTableStart(verifier) && VerifyOffsetRequired(verifier, VT_FILENAME) && verifier.VerifyString(filename()) && @@ -1360,7 +1369,8 @@ struct Schema FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table { const ::flatbuffers::Vector<::flatbuffers::Offset> *fbs_files() const { return GetPointer> *>(VT_FBS_FILES); } - bool Verify(::flatbuffers::Verifier &verifier) const { + template + bool Verify(::flatbuffers::VerifierTemplate &verifier) const { return VerifyTableStart(verifier) && VerifyOffsetRequired(verifier, VT_OBJECTS) && verifier.VerifyVector(objects()) && @@ -1498,14 +1508,16 @@ inline bool SizePrefixedSchemaBufferHasIdentifier(const void *buf) { buf, SchemaIdentifier(), true); } +template inline bool VerifySchemaBuffer( - ::flatbuffers::Verifier &verifier) { - return verifier.VerifyBuffer(SchemaIdentifier()); + ::flatbuffers::VerifierTemplate &verifier) { + return verifier.template VerifyBuffer(SchemaIdentifier()); } +template inline bool VerifySizePrefixedSchemaBuffer( - ::flatbuffers::Verifier &verifier) { - return verifier.VerifySizePrefixedBuffer(SchemaIdentifier()); + ::flatbuffers::VerifierTemplate &verifier) { + return verifier.template VerifySizePrefixedBuffer(SchemaIdentifier()); } inline const char *SchemaExtension() { diff --git a/include/flatbuffers/table.h b/include/flatbuffers/table.h index defe084370b..0149216ff43 100644 --- a/include/flatbuffers/table.h +++ b/include/flatbuffers/table.h @@ -122,49 +122,58 @@ class Table { // Verify the vtable of this table. // Call this once per table, followed by VerifyField once per field. - bool VerifyTableStart(Verifier& verifier) const { + template + bool VerifyTableStart(VerifierTemplate& verifier) const { return verifier.VerifyTableStart(data_); } // Verify a particular field. - template - bool VerifyField(const Verifier& verifier, voffset_t field, + template + bool VerifyField(const VerifierTemplate& verifier, voffset_t field, size_t align) const { // Calling GetOptionalFieldOffset should be safe now thanks to // VerifyTable(). auto field_offset = GetOptionalFieldOffset(field); // Check the actual field. - return !field_offset || verifier.VerifyField(data_, field_offset, align); + return !field_offset || + verifier.template VerifyField(data_, field_offset, align); } // VerifyField for required fields. - template - bool VerifyFieldRequired(const Verifier& verifier, voffset_t field, + template + bool VerifyFieldRequired(const VerifierTemplate& verifier, voffset_t field, size_t align) const { auto field_offset = GetOptionalFieldOffset(field); return verifier.Check(field_offset != 0) && - verifier.VerifyField(data_, field_offset, align); + verifier.template VerifyField(data_, field_offset, align); } // Versions for offsets. - template - bool VerifyOffset(const Verifier& verifier, voffset_t field) const { + template + bool VerifyOffset(const VerifierTemplate& verifier, + voffset_t field) const { auto field_offset = GetOptionalFieldOffset(field); - return !field_offset || verifier.VerifyOffset(data_, field_offset); + return !field_offset || + verifier.template VerifyOffset(data_, field_offset); } - template - bool VerifyOffsetRequired(const Verifier& verifier, voffset_t field) const { + template + bool VerifyOffsetRequired(const VerifierTemplate& verifier, + voffset_t field) const { auto field_offset = GetOptionalFieldOffset(field); return verifier.Check(field_offset != 0) && - verifier.VerifyOffset(data_, field_offset); + verifier.template VerifyOffset(data_, field_offset); } - bool VerifyOffset64(const Verifier& verifier, voffset_t field) const { + template + bool VerifyOffset64(const VerifierTemplate& verifier, + voffset_t field) const { return VerifyOffset(verifier, field); } - bool VerifyOffset64Required(const Verifier& verifier, voffset_t field) const { + template + bool VerifyOffset64Required(const VerifierTemplate& verifier, + voffset_t field) const { return VerifyOffsetRequired(verifier, field); } diff --git a/samples/monster_generated.h b/samples/monster_generated.h index d2e22a153c9..a0facac9603 100644 --- a/samples/monster_generated.h +++ b/samples/monster_generated.h @@ -179,8 +179,10 @@ inline bool operator!=(const EquipmentUnion &lhs, const EquipmentUnion &rhs) { return !(lhs == rhs); } -bool VerifyEquipment(::flatbuffers::Verifier &verifier, const void *obj, Equipment type); -bool VerifyEquipmentVector(::flatbuffers::Verifier &verifier, const ::flatbuffers::Vector<::flatbuffers::Offset> *values, const ::flatbuffers::Vector *types); +template +bool VerifyEquipment(::flatbuffers::VerifierTemplate &verifier, const void *obj, Equipment type); +template +bool VerifyEquipmentVector(::flatbuffers::VerifierTemplate &verifier, const ::flatbuffers::Vector<::flatbuffers::Offset> *values, const ::flatbuffers::Vector *types); FLATBUFFERS_MANUALLY_ALIGNED_STRUCT(4) Vec3 FLATBUFFERS_FINAL_CLASS { private: @@ -331,7 +333,8 @@ struct Monster FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table { ::flatbuffers::Vector *mutable_path() { return GetPointer<::flatbuffers::Vector *>(VT_PATH); } - bool Verify(::flatbuffers::Verifier &verifier) const { + template + bool Verify(::flatbuffers::VerifierTemplate &verifier) const { return VerifyTableStart(verifier) && VerifyField(verifier, VT_POS, 4) && VerifyField(verifier, VT_MANA, 2) && @@ -491,7 +494,8 @@ struct Weapon FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table { bool mutate_damage(int16_t _damage = 0) { return SetField(VT_DAMAGE, _damage, 0); } - bool Verify(::flatbuffers::Verifier &verifier) const { + template + bool Verify(::flatbuffers::VerifierTemplate &verifier) const { return VerifyTableStart(verifier) && VerifyOffset(verifier, VT_NAME) && verifier.VerifyString(name()) && @@ -686,7 +690,8 @@ inline ::flatbuffers::Offset Weapon::Pack(::flatbuffers::FlatBufferBuild _damage); } -inline bool VerifyEquipment(::flatbuffers::Verifier &verifier, const void *obj, Equipment type) { +template +inline bool VerifyEquipment(::flatbuffers::VerifierTemplate &verifier, const void *obj, Equipment type) { switch (type) { case Equipment_NONE: { return true; @@ -699,7 +704,8 @@ inline bool VerifyEquipment(::flatbuffers::Verifier &verifier, const void *obj, } } -inline bool VerifyEquipmentVector(::flatbuffers::Verifier &verifier, const ::flatbuffers::Vector<::flatbuffers::Offset> *values, const ::flatbuffers::Vector *types) { +template +inline bool VerifyEquipmentVector(::flatbuffers::VerifierTemplate &verifier, const ::flatbuffers::Vector<::flatbuffers::Offset> *values, const ::flatbuffers::Vector *types) { if (!values || !types) return !values && !types; if (values->size() != types->size()) return false; for (::flatbuffers::uoffset_t i = 0; i < values->size(); ++i) { @@ -883,14 +889,16 @@ inline MyGame::Sample::Monster *GetMutableSizePrefixedMonster(void *buf) { return ::flatbuffers::GetMutableSizePrefixedRoot(buf); } +template inline bool VerifyMonsterBuffer( - ::flatbuffers::Verifier &verifier) { - return verifier.VerifyBuffer(nullptr); + ::flatbuffers::VerifierTemplate &verifier) { + return verifier.template VerifyBuffer(nullptr); } +template inline bool VerifySizePrefixedMonsterBuffer( - ::flatbuffers::Verifier &verifier) { - return verifier.VerifySizePrefixedBuffer(nullptr); + ::flatbuffers::VerifierTemplate &verifier) { + return verifier.template VerifySizePrefixedBuffer(nullptr); } inline void FinishMonsterBuffer( diff --git a/src/idl_gen_cpp.cpp b/src/idl_gen_cpp.cpp index ddf9395ae6e..d3441db4c0c 100644 --- a/src/idl_gen_cpp.cpp +++ b/src/idl_gen_cpp.cpp @@ -681,17 +681,20 @@ class CppGenerator : public BaseGenerator { code_.SetValue("ID", "nullptr"); } + code_ += "template "; code_ += "inline bool Verify{{STRUCT_NAME}}Buffer("; - code_ += " ::flatbuffers::Verifier &verifier) {"; - code_ += " return verifier.VerifyBuffer<{{CPP_NAME}}>({{ID}});"; + code_ += " ::flatbuffers::VerifierTemplate &verifier) {"; + code_ += " return verifier.template VerifyBuffer<{{CPP_NAME}}>({{ID}});"; code_ += "}"; code_ += ""; + code_ += "template "; code_ += "inline bool VerifySizePrefixed{{STRUCT_NAME}}Buffer("; - code_ += " ::flatbuffers::Verifier &verifier) {"; + code_ += " ::flatbuffers::VerifierTemplate &verifier) {"; code_ += " return " - "verifier.VerifySizePrefixedBuffer<{{CPP_NAME}}{{SIZE_T}}>({{ID}});"; + "verifier.template " + "VerifySizePrefixedBuffer<{{CPP_NAME}}{{SIZE_T}}>({{ID}});"; code_ += "}"; code_ += ""; @@ -1102,19 +1105,31 @@ class CppGenerator : public BaseGenerator { } } + // For the initial declaration, we specify the template parameters, + // including template default arguments. + std::string UnionVerifyTemplateDecl() { return "template "; } + + // For the subsequent definition, we must not redeclare the template default + // arguments. + std::string UnionVerifyTemplateDef() { return "template "; } + + // Should be used in conjunction with + // UnionVerifyTemplateDecl()/UnionVerifyTemplateDef(). std::string UnionVerifySignature(const EnumDef& enum_def) { return "bool Verify" + Name(enum_def) + - "(::flatbuffers::Verifier &verifier, const void *obj, " + - Name(enum_def) + " type)"; + "(::flatbuffers::VerifierTemplate &verifier, " + + "const void *obj, " + Name(enum_def) + " type)"; } + // Should be used in conjunction with + // UnionVerifyTemplateDecl()/UnionVerifyTemplateDef(). std::string UnionVectorVerifySignature(const EnumDef& enum_def) { const std::string name = Name(enum_def); const std::string& type = opts_.scoped_enums ? name : GenTypeBasic(enum_def.underlying_type, false); return "bool Verify" + name + "Vector" + - "(::flatbuffers::Verifier &verifier, " + + "(::flatbuffers::VerifierTemplate &verifier, " + "const ::flatbuffers::Vector<::flatbuffers::Offset> " "*values, " + "const ::flatbuffers::Vector<" + type + "> *types)"; @@ -1409,7 +1424,9 @@ class CppGenerator : public BaseGenerator { GenEnumObjectBasedAPI(enum_def); if (enum_def.is_union) { + code_ += UnionVerifyTemplateDecl(); code_ += UnionVerifySignature(enum_def) + ";"; + code_ += UnionVerifyTemplateDecl(); code_ += UnionVectorVerifySignature(enum_def) + ";"; code_ += ""; } @@ -1638,6 +1655,7 @@ class CppGenerator : public BaseGenerator { // on the wrong type. code_.SetValue("ENUM_NAME", Name(enum_def)); + code_ += UnionVerifyTemplateDef(); code_ += "inline " + UnionVerifySignature(enum_def) + " {"; code_ += " switch (type) {"; for (auto it = enum_def.Vals().begin(); it != enum_def.Vals().end(); ++it) { @@ -1654,7 +1672,7 @@ class CppGenerator : public BaseGenerator { code_.SetValue("ALIGN", NumToString(ev.union_type.struct_def->minalign)); code_ += - " return verifier.VerifyField<{{TYPE}}>(" + " return verifier.template VerifyField<{{TYPE}}>(" "static_cast(obj), 0, {{ALIGN}});"; } else { code_ += getptr; @@ -1678,6 +1696,7 @@ class CppGenerator : public BaseGenerator { code_ += "}"; code_ += ""; + code_ += UnionVerifyTemplateDef(); code_ += "inline " + UnionVectorVerifySignature(enum_def) + " {"; code_ += " if (!values || !types) return !values && !types;"; code_ += " if (values->size() != types->size()) return false;"; @@ -2412,7 +2431,7 @@ class CppGenerator : public BaseGenerator { code_.SetValue("CPP_NAME", nfn); // FIXME: file_identifier. code_ += - "{{PRE}}verifier.VerifyNestedFlatBuffer<{{CPP_NAME}}>" + "{{PRE}}verifier.template VerifyNestedFlatBuffer<{{CPP_NAME}}>" "({{NAME}}(), nullptr)\\"; } else if (field.flexbuffer) { code_ += @@ -3001,7 +3020,10 @@ class CppGenerator : public BaseGenerator { // Generate a verifier function that can check a buffer from an untrusted // source will never cause reads outside the buffer. - code_ += " bool Verify(::flatbuffers::Verifier &verifier) const {"; + code_ += " template "; + code_ += + " bool Verify(::flatbuffers::VerifierTemplate " + "&verifier) const {"; code_ += " return VerifyTableStart(verifier)\\"; for (const auto& field : struct_def.fields.vec) { if (field->deprecated) { diff --git a/src/idl_parser.cpp b/src/idl_parser.cpp index 42df4cde71e..57a25189b9a 100644 --- a/src/idl_parser.cpp +++ b/src/idl_parser.cpp @@ -4351,8 +4351,9 @@ bool Parser::Deserialize(const uint8_t* buf, const size_t size) { else size_prefixed = true; } - auto verify_fn = size_prefixed ? &reflection::VerifySizePrefixedSchemaBuffer - : &reflection::VerifySchemaBuffer; + auto verify_fn = size_prefixed + ? &reflection::VerifySizePrefixedSchemaBuffer + : &reflection::VerifySchemaBuffer; if (!verify_fn(verifier)) { return false; } diff --git a/tests/64bit/evolution/v1_generated.h b/tests/64bit/evolution/v1_generated.h index 7cfd1bb4a2a..a4222eb5d1e 100644 --- a/tests/64bit/evolution/v1_generated.h +++ b/tests/64bit/evolution/v1_generated.h @@ -52,7 +52,8 @@ struct RootTable FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table { ::flatbuffers::Vector *mutable_b() { return GetPointer<::flatbuffers::Vector *>(VT_B); } - bool Verify(::flatbuffers::Verifier &verifier) const { + template + bool Verify(::flatbuffers::VerifierTemplate &verifier) const { return VerifyTableStart(verifier) && VerifyField(verifier, VT_A, 4) && VerifyOffset(verifier, VT_B) && @@ -180,14 +181,16 @@ inline v1::RootTable *GetMutableSizePrefixedRootTable(void *buf) { return ::flatbuffers::GetMutableSizePrefixedRoot(buf); } +template inline bool VerifyRootTableBuffer( - ::flatbuffers::Verifier &verifier) { - return verifier.VerifyBuffer(nullptr); + ::flatbuffers::VerifierTemplate &verifier) { + return verifier.template VerifyBuffer(nullptr); } +template inline bool VerifySizePrefixedRootTableBuffer( - ::flatbuffers::Verifier &verifier) { - return verifier.VerifySizePrefixedBuffer(nullptr); + ::flatbuffers::VerifierTemplate &verifier) { + return verifier.template VerifySizePrefixedBuffer(nullptr); } inline void FinishRootTableBuffer( diff --git a/tests/64bit/evolution/v2_generated.h b/tests/64bit/evolution/v2_generated.h index 4b4a5fc5f7a..ee618639d2f 100644 --- a/tests/64bit/evolution/v2_generated.h +++ b/tests/64bit/evolution/v2_generated.h @@ -60,7 +60,8 @@ struct RootTable FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table { ::flatbuffers::Vector64 *mutable_big_vector() { return GetPointer64<::flatbuffers::Vector64 *>(VT_BIG_VECTOR); } - bool Verify(::flatbuffers::Verifier &verifier) const { + template + bool Verify(::flatbuffers::VerifierTemplate &verifier) const { return VerifyTableStart(verifier) && VerifyField(verifier, VT_A, 4) && VerifyOffset(verifier, VT_B) && @@ -204,14 +205,16 @@ inline v2::RootTable *GetMutableSizePrefixedRootTable(void *buf) { return ::flatbuffers::GetMutableSizePrefixedRoot(buf); } +template inline bool VerifyRootTableBuffer( - ::flatbuffers::Verifier &verifier) { - return verifier.VerifyBuffer(nullptr); + ::flatbuffers::VerifierTemplate &verifier) { + return verifier.template VerifyBuffer(nullptr); } +template inline bool VerifySizePrefixedRootTableBuffer( - ::flatbuffers::Verifier &verifier) { - return verifier.VerifySizePrefixedBuffer(nullptr); + ::flatbuffers::VerifierTemplate &verifier) { + return verifier.template VerifySizePrefixedBuffer(nullptr); } inline void FinishRootTableBuffer( diff --git a/tests/64bit/test_64bit_generated.h b/tests/64bit/test_64bit_generated.h index 54684ff7ca6..4d669dc0bce 100644 --- a/tests/64bit/test_64bit_generated.h +++ b/tests/64bit/test_64bit_generated.h @@ -108,7 +108,8 @@ struct WrapperTable FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table { ::flatbuffers::Vector *mutable_vector() { return GetPointer64<::flatbuffers::Vector *>(VT_VECTOR); } - bool Verify(::flatbuffers::Verifier &verifier) const { + template + bool Verify(::flatbuffers::VerifierTemplate &verifier) const { return VerifyTableStart(verifier) && VerifyOffset64(verifier, VT_VECTOR) && verifier.VerifyVector(vector()) && @@ -258,7 +259,8 @@ struct RootTable FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table { ::flatbuffers::Vector64 *mutable_forced_aligned_vector() { return GetPointer64<::flatbuffers::Vector64 *>(VT_FORCED_ALIGNED_VECTOR); } - bool Verify(::flatbuffers::Verifier &verifier) const { + template + bool Verify(::flatbuffers::VerifierTemplate &verifier) const { return VerifyTableStart(verifier) && VerifyOffset64(verifier, VT_FAR_VECTOR) && verifier.VerifyVector(far_vector()) && @@ -271,7 +273,7 @@ struct RootTable FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table { verifier.VerifyString(near_string()) && VerifyOffset64(verifier, VT_NESTED_ROOT) && verifier.VerifyVector(nested_root()) && - verifier.VerifyNestedFlatBuffer(nested_root(), nullptr) && + verifier.template VerifyNestedFlatBuffer(nested_root(), nullptr) && VerifyOffset64(verifier, VT_FAR_STRUCT_VECTOR) && verifier.VerifyVector(far_struct_vector()) && VerifyOffset64(verifier, VT_BIG_STRUCT_VECTOR) && @@ -616,14 +618,16 @@ inline RootTable *GetMutableSizePrefixedRootTable(void *buf) { return ::flatbuffers::GetMutableSizePrefixedRoot(buf); } +template inline bool VerifyRootTableBuffer( - ::flatbuffers::Verifier &verifier) { - return verifier.VerifyBuffer(nullptr); + ::flatbuffers::VerifierTemplate &verifier) { + return verifier.template VerifyBuffer(nullptr); } +template inline bool VerifySizePrefixedRootTableBuffer( - ::flatbuffers::Verifier &verifier) { - return verifier.VerifySizePrefixedBuffer(nullptr); + ::flatbuffers::VerifierTemplate &verifier) { + return verifier.template VerifySizePrefixedBuffer(nullptr); } inline void FinishRootTableBuffer( diff --git a/tests/cpp17/generated_cpp17/monster_test_generated.h b/tests/cpp17/generated_cpp17/monster_test_generated.h index ba8291a258c..c056e38f49d 100644 --- a/tests/cpp17/generated_cpp17/monster_test_generated.h +++ b/tests/cpp17/generated_cpp17/monster_test_generated.h @@ -323,8 +323,10 @@ struct AnyUnion { } }; -bool VerifyAny(::flatbuffers::Verifier &verifier, const void *obj, Any type); -bool VerifyAnyVector(::flatbuffers::Verifier &verifier, const ::flatbuffers::Vector<::flatbuffers::Offset> *values, const ::flatbuffers::Vector *types); +template +bool VerifyAny(::flatbuffers::VerifierTemplate &verifier, const void *obj, Any type); +template +bool VerifyAnyVector(::flatbuffers::VerifierTemplate &verifier, const ::flatbuffers::Vector<::flatbuffers::Offset> *values, const ::flatbuffers::Vector *types); enum class AnyUniqueAliases : uint8_t { NONE = 0, @@ -450,8 +452,10 @@ struct AnyUniqueAliasesUnion { } }; -bool VerifyAnyUniqueAliases(::flatbuffers::Verifier &verifier, const void *obj, AnyUniqueAliases type); -bool VerifyAnyUniqueAliasesVector(::flatbuffers::Verifier &verifier, const ::flatbuffers::Vector<::flatbuffers::Offset> *values, const ::flatbuffers::Vector *types); +template +bool VerifyAnyUniqueAliases(::flatbuffers::VerifierTemplate &verifier, const void *obj, AnyUniqueAliases type); +template +bool VerifyAnyUniqueAliasesVector(::flatbuffers::VerifierTemplate &verifier, const ::flatbuffers::Vector<::flatbuffers::Offset> *values, const ::flatbuffers::Vector *types); enum class AnyAmbiguousAliases : uint8_t { NONE = 0, @@ -535,8 +539,10 @@ struct AnyAmbiguousAliasesUnion { } }; -bool VerifyAnyAmbiguousAliases(::flatbuffers::Verifier &verifier, const void *obj, AnyAmbiguousAliases type); -bool VerifyAnyAmbiguousAliasesVector(::flatbuffers::Verifier &verifier, const ::flatbuffers::Vector<::flatbuffers::Offset> *values, const ::flatbuffers::Vector *types); +template +bool VerifyAnyAmbiguousAliases(::flatbuffers::VerifierTemplate &verifier, const void *obj, AnyAmbiguousAliases type); +template +bool VerifyAnyAmbiguousAliasesVector(::flatbuffers::VerifierTemplate &verifier, const ::flatbuffers::Vector<::flatbuffers::Offset> *values, const ::flatbuffers::Vector *types); FLATBUFFERS_MANUALLY_ALIGNED_STRUCT(2) Test FLATBUFFERS_FINAL_CLASS { private: @@ -881,7 +887,8 @@ struct InParentNamespace FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table static const ::flatbuffers::TypeTable *MiniReflectTypeTable() { return InParentNamespaceTypeTable(); } - bool Verify(::flatbuffers::Verifier &verifier) const { + template + bool Verify(::flatbuffers::VerifierTemplate &verifier) const { return VerifyTableStart(verifier) && verifier.EndTable(); } @@ -935,7 +942,8 @@ struct Monster FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table { static const ::flatbuffers::TypeTable *MiniReflectTypeTable() { return MonsterTypeTable(); } - bool Verify(::flatbuffers::Verifier &verifier) const { + template + bool Verify(::flatbuffers::VerifierTemplate &verifier) const { return VerifyTableStart(verifier) && verifier.EndTable(); } @@ -1006,7 +1014,8 @@ struct TestSimpleTableWithEnum FLATBUFFERS_FINAL_CLASS : private ::flatbuffers:: if constexpr (Index == 0) return color(); else static_assert(Index != -1, "Invalid Field Index"); } - bool Verify(::flatbuffers::Verifier &verifier) const { + template + bool Verify(::flatbuffers::VerifierTemplate &verifier) const { return VerifyTableStart(verifier) && VerifyField(verifier, VT_COLOR, 1) && verifier.EndTable(); @@ -1107,7 +1116,8 @@ struct Stat FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table { else if constexpr (Index == 2) return count(); else static_assert(Index != -1, "Invalid Field Index"); } - bool Verify(::flatbuffers::Verifier &verifier) const { + template + bool Verify(::flatbuffers::VerifierTemplate &verifier) const { return VerifyTableStart(verifier) && VerifyOffset(verifier, VT_ID) && verifier.VerifyString(id()) && @@ -1218,7 +1228,8 @@ struct Referrable FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table { if constexpr (Index == 0) return id(); else static_assert(Index != -1, "Invalid Field Index"); } - bool Verify(::flatbuffers::Verifier &verifier) const { + template + bool Verify(::flatbuffers::VerifierTemplate &verifier) const { return VerifyTableStart(verifier) && VerifyField(verifier, VT_ID, 8) && verifier.EndTable(); @@ -1886,7 +1897,8 @@ struct Monster FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table { else if constexpr (Index == 60) return double_inf_default(); else static_assert(Index != -1, "Invalid Field Index"); } - bool Verify(::flatbuffers::Verifier &verifier) const { + template + bool Verify(::flatbuffers::VerifierTemplate &verifier) const { return VerifyTableStart(verifier) && VerifyField(verifier, VT_POS, 8) && VerifyField(verifier, VT_MANA, 2) && @@ -1911,7 +1923,7 @@ struct Monster FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table { verifier.VerifyTable(enemy()) && VerifyOffset(verifier, VT_TESTNESTEDFLATBUFFER) && verifier.VerifyVector(testnestedflatbuffer()) && - verifier.VerifyNestedFlatBuffer(testnestedflatbuffer(), nullptr) && + verifier.template VerifyNestedFlatBuffer(testnestedflatbuffer(), nullptr) && VerifyOffset(verifier, VT_TESTEMPTY) && verifier.VerifyTable(testempty()) && VerifyField(verifier, VT_TESTBOOL, 1) && @@ -1970,7 +1982,7 @@ struct Monster FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table { VerifyField(verifier, VT_SIGNED_ENUM, 1) && VerifyOffset(verifier, VT_TESTREQUIREDNESTEDFLATBUFFER) && verifier.VerifyVector(testrequirednestedflatbuffer()) && - verifier.VerifyNestedFlatBuffer(testrequirednestedflatbuffer(), nullptr) && + verifier.template VerifyNestedFlatBuffer(testrequirednestedflatbuffer(), nullptr) && VerifyOffset(verifier, VT_SCALAR_KEY_SORTED_TABLES) && verifier.VerifyVector(scalar_key_sorted_tables()) && verifier.VerifyVectorOfTables(scalar_key_sorted_tables()) && @@ -2692,7 +2704,8 @@ struct TypeAliases FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table { else if constexpr (Index == 11) return vf64(); else static_assert(Index != -1, "Invalid Field Index"); } - bool Verify(::flatbuffers::Verifier &verifier) const { + template + bool Verify(::flatbuffers::VerifierTemplate &verifier) const { return VerifyTableStart(verifier) && VerifyField(verifier, VT_I8, 1) && VerifyField(verifier, VT_U8, 1) && @@ -3385,7 +3398,8 @@ inline ::flatbuffers::Offset TypeAliases::Pack(::flatbuffers::FlatB _vf64); } -inline bool VerifyAny(::flatbuffers::Verifier &verifier, const void *obj, Any type) { +template +inline bool VerifyAny(::flatbuffers::VerifierTemplate &verifier, const void *obj, Any type) { switch (type) { case Any::NONE: { return true; @@ -3406,7 +3420,8 @@ inline bool VerifyAny(::flatbuffers::Verifier &verifier, const void *obj, Any ty } } -inline bool VerifyAnyVector(::flatbuffers::Verifier &verifier, const ::flatbuffers::Vector<::flatbuffers::Offset> *values, const ::flatbuffers::Vector *types) { +template +inline bool VerifyAnyVector(::flatbuffers::VerifierTemplate &verifier, const ::flatbuffers::Vector<::flatbuffers::Offset> *values, const ::flatbuffers::Vector *types) { if (!values || !types) return !values && !types; if (values->size() != types->size()) return false; for (::flatbuffers::uoffset_t i = 0; i < values->size(); ++i) { @@ -3498,7 +3513,8 @@ inline void AnyUnion::Reset() { type = Any::NONE; } -inline bool VerifyAnyUniqueAliases(::flatbuffers::Verifier &verifier, const void *obj, AnyUniqueAliases type) { +template +inline bool VerifyAnyUniqueAliases(::flatbuffers::VerifierTemplate &verifier, const void *obj, AnyUniqueAliases type) { switch (type) { case AnyUniqueAliases::NONE: { return true; @@ -3519,7 +3535,8 @@ inline bool VerifyAnyUniqueAliases(::flatbuffers::Verifier &verifier, const void } } -inline bool VerifyAnyUniqueAliasesVector(::flatbuffers::Verifier &verifier, const ::flatbuffers::Vector<::flatbuffers::Offset> *values, const ::flatbuffers::Vector *types) { +template +inline bool VerifyAnyUniqueAliasesVector(::flatbuffers::VerifierTemplate &verifier, const ::flatbuffers::Vector<::flatbuffers::Offset> *values, const ::flatbuffers::Vector *types) { if (!values || !types) return !values && !types; if (values->size() != types->size()) return false; for (::flatbuffers::uoffset_t i = 0; i < values->size(); ++i) { @@ -3611,7 +3628,8 @@ inline void AnyUniqueAliasesUnion::Reset() { type = AnyUniqueAliases::NONE; } -inline bool VerifyAnyAmbiguousAliases(::flatbuffers::Verifier &verifier, const void *obj, AnyAmbiguousAliases type) { +template +inline bool VerifyAnyAmbiguousAliases(::flatbuffers::VerifierTemplate &verifier, const void *obj, AnyAmbiguousAliases type) { switch (type) { case AnyAmbiguousAliases::NONE: { return true; @@ -3632,7 +3650,8 @@ inline bool VerifyAnyAmbiguousAliases(::flatbuffers::Verifier &verifier, const v } } -inline bool VerifyAnyAmbiguousAliasesVector(::flatbuffers::Verifier &verifier, const ::flatbuffers::Vector<::flatbuffers::Offset> *values, const ::flatbuffers::Vector *types) { +template +inline bool VerifyAnyAmbiguousAliasesVector(::flatbuffers::VerifierTemplate &verifier, const ::flatbuffers::Vector<::flatbuffers::Offset> *values, const ::flatbuffers::Vector *types) { if (!values || !types) return !values && !types; if (values->size() != types->size()) return false; for (::flatbuffers::uoffset_t i = 0; i < values->size(); ++i) { @@ -4241,14 +4260,16 @@ inline bool SizePrefixedMonsterBufferHasIdentifier(const void *buf) { buf, MonsterIdentifier(), true); } +template inline bool VerifyMonsterBuffer( - ::flatbuffers::Verifier &verifier) { - return verifier.VerifyBuffer(MonsterIdentifier()); + ::flatbuffers::VerifierTemplate &verifier) { + return verifier.template VerifyBuffer(MonsterIdentifier()); } +template inline bool VerifySizePrefixedMonsterBuffer( - ::flatbuffers::Verifier &verifier) { - return verifier.VerifySizePrefixedBuffer(MonsterIdentifier()); + ::flatbuffers::VerifierTemplate &verifier) { + return verifier.template VerifySizePrefixedBuffer(MonsterIdentifier()); } inline const char *MonsterExtension() { diff --git a/tests/cpp17/generated_cpp17/optional_scalars_generated.h b/tests/cpp17/generated_cpp17/optional_scalars_generated.h index 77465e1ef85..bb415c7692c 100644 --- a/tests/cpp17/generated_cpp17/optional_scalars_generated.h +++ b/tests/cpp17/generated_cpp17/optional_scalars_generated.h @@ -395,7 +395,8 @@ struct ScalarStuff FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table { else if constexpr (Index == 35) return default_enum(); else static_assert(Index != -1, "Invalid Field Index"); } - bool Verify(::flatbuffers::Verifier &verifier) const { + template + bool Verify(::flatbuffers::VerifierTemplate &verifier) const { return VerifyTableStart(verifier) && VerifyField(verifier, VT_JUST_I8, 1) && VerifyField(verifier, VT_MAYBE_I8, 1) && @@ -958,14 +959,16 @@ inline bool SizePrefixedScalarStuffBufferHasIdentifier(const void *buf) { buf, ScalarStuffIdentifier(), true); } +template inline bool VerifyScalarStuffBuffer( - ::flatbuffers::Verifier &verifier) { - return verifier.VerifyBuffer(ScalarStuffIdentifier()); + ::flatbuffers::VerifierTemplate &verifier) { + return verifier.template VerifyBuffer(ScalarStuffIdentifier()); } +template inline bool VerifySizePrefixedScalarStuffBuffer( - ::flatbuffers::Verifier &verifier) { - return verifier.VerifySizePrefixedBuffer(ScalarStuffIdentifier()); + ::flatbuffers::VerifierTemplate &verifier) { + return verifier.template VerifySizePrefixedBuffer(ScalarStuffIdentifier()); } inline const char *ScalarStuffExtension() { diff --git a/tests/cpp17/generated_cpp17/union_vector_generated.h b/tests/cpp17/generated_cpp17/union_vector_generated.h index 4be15c99889..e81f1d6a359 100644 --- a/tests/cpp17/generated_cpp17/union_vector_generated.h +++ b/tests/cpp17/generated_cpp17/union_vector_generated.h @@ -158,8 +158,10 @@ struct CharacterUnion { } }; -bool VerifyCharacter(::flatbuffers::Verifier &verifier, const void *obj, Character type); -bool VerifyCharacterVector(::flatbuffers::Verifier &verifier, const ::flatbuffers::Vector<::flatbuffers::Offset> *values, const ::flatbuffers::Vector *types); +template +bool VerifyCharacter(::flatbuffers::VerifierTemplate &verifier, const void *obj, Character type); +template +bool VerifyCharacterVector(::flatbuffers::VerifierTemplate &verifier, const ::flatbuffers::Vector<::flatbuffers::Offset> *values, const ::flatbuffers::Vector *types); enum class Gadget : uint8_t { NONE = 0, @@ -266,8 +268,10 @@ struct GadgetUnion { } }; -bool VerifyGadget(::flatbuffers::Verifier &verifier, const void *obj, Gadget type); -bool VerifyGadgetVector(::flatbuffers::Verifier &verifier, const ::flatbuffers::Vector<::flatbuffers::Offset> *values, const ::flatbuffers::Vector *types); +template +bool VerifyGadget(::flatbuffers::VerifierTemplate &verifier, const void *obj, Gadget type); +template +bool VerifyGadgetVector(::flatbuffers::VerifierTemplate &verifier, const ::flatbuffers::Vector<::flatbuffers::Offset> *values, const ::flatbuffers::Vector *types); FLATBUFFERS_MANUALLY_ALIGNED_STRUCT(4) Rapunzel FLATBUFFERS_FINAL_CLASS { private: @@ -418,7 +422,8 @@ struct Attacker FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table { if constexpr (Index == 0) return sword_attack_damage(); else static_assert(Index != -1, "Invalid Field Index"); } - bool Verify(::flatbuffers::Verifier &verifier) const { + template + bool Verify(::flatbuffers::VerifierTemplate &verifier) const { return VerifyTableStart(verifier) && VerifyField(verifier, VT_SWORD_ATTACK_DAMAGE, 4) && verifier.EndTable(); @@ -495,7 +500,8 @@ struct HandFan FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table { if constexpr (Index == 0) return length(); else static_assert(Index != -1, "Invalid Field Index"); } - bool Verify(::flatbuffers::Verifier &verifier) const { + template + bool Verify(::flatbuffers::VerifierTemplate &verifier) const { return VerifyTableStart(verifier) && VerifyField(verifier, VT_LENGTH, 4) && verifier.EndTable(); @@ -612,7 +618,8 @@ struct Movie FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table { else if constexpr (Index == 3) return characters(); else static_assert(Index != -1, "Invalid Field Index"); } - bool Verify(::flatbuffers::Verifier &verifier) const { + template + bool Verify(::flatbuffers::VerifierTemplate &verifier) const { return VerifyTableStart(verifier) && VerifyField(verifier, VT_MAIN_CHARACTER_TYPE, 1) && VerifyOffset(verifier, VT_MAIN_CHARACTER) && @@ -791,7 +798,8 @@ inline ::flatbuffers::Offset Movie::Pack(::flatbuffers::FlatBufferBuilder _characters); } -inline bool VerifyCharacter(::flatbuffers::Verifier &verifier, const void *obj, Character type) { +template +inline bool VerifyCharacter(::flatbuffers::VerifierTemplate &verifier, const void *obj, Character type) { switch (type) { case Character::NONE: { return true; @@ -801,13 +809,13 @@ inline bool VerifyCharacter(::flatbuffers::Verifier &verifier, const void *obj, return verifier.VerifyTable(ptr); } case Character::Rapunzel: { - return verifier.VerifyField(static_cast(obj), 0, 4); + return verifier.template VerifyField(static_cast(obj), 0, 4); } case Character::Belle: { - return verifier.VerifyField(static_cast(obj), 0, 4); + return verifier.template VerifyField(static_cast(obj), 0, 4); } case Character::BookFan: { - return verifier.VerifyField(static_cast(obj), 0, 4); + return verifier.template VerifyField(static_cast(obj), 0, 4); } case Character::Other: { auto ptr = reinterpret_cast(obj); @@ -821,7 +829,8 @@ inline bool VerifyCharacter(::flatbuffers::Verifier &verifier, const void *obj, } } -inline bool VerifyCharacterVector(::flatbuffers::Verifier &verifier, const ::flatbuffers::Vector<::flatbuffers::Offset> *values, const ::flatbuffers::Vector *types) { +template +inline bool VerifyCharacterVector(::flatbuffers::VerifierTemplate &verifier, const ::flatbuffers::Vector<::flatbuffers::Offset> *values, const ::flatbuffers::Vector *types) { if (!values || !types) return !values && !types; if (values->size() != types->size()) return false; for (::flatbuffers::uoffset_t i = 0; i < values->size(); ++i) { @@ -964,13 +973,14 @@ inline void CharacterUnion::Reset() { type = Character::NONE; } -inline bool VerifyGadget(::flatbuffers::Verifier &verifier, const void *obj, Gadget type) { +template +inline bool VerifyGadget(::flatbuffers::VerifierTemplate &verifier, const void *obj, Gadget type) { switch (type) { case Gadget::NONE: { return true; } case Gadget::FallingTub: { - return verifier.VerifyField(static_cast(obj), 0, 4); + return verifier.template VerifyField(static_cast(obj), 0, 4); } case Gadget::HandFan: { auto ptr = reinterpret_cast(obj); @@ -980,7 +990,8 @@ inline bool VerifyGadget(::flatbuffers::Verifier &verifier, const void *obj, Gad } } -inline bool VerifyGadgetVector(::flatbuffers::Verifier &verifier, const ::flatbuffers::Vector<::flatbuffers::Offset> *values, const ::flatbuffers::Vector *types) { +template +inline bool VerifyGadgetVector(::flatbuffers::VerifierTemplate &verifier, const ::flatbuffers::Vector<::flatbuffers::Offset> *values, const ::flatbuffers::Vector *types) { if (!values || !types) return !values && !types; if (values->size() != types->size()) return false; for (::flatbuffers::uoffset_t i = 0; i < values->size(); ++i) { @@ -1226,14 +1237,16 @@ inline bool SizePrefixedMovieBufferHasIdentifier(const void *buf) { buf, MovieIdentifier(), true); } +template inline bool VerifyMovieBuffer( - ::flatbuffers::Verifier &verifier) { - return verifier.VerifyBuffer(MovieIdentifier()); + ::flatbuffers::VerifierTemplate &verifier) { + return verifier.template VerifyBuffer(MovieIdentifier()); } +template inline bool VerifySizePrefixedMovieBuffer( - ::flatbuffers::Verifier &verifier) { - return verifier.VerifySizePrefixedBuffer(MovieIdentifier()); + ::flatbuffers::VerifierTemplate &verifier) { + return verifier.template VerifySizePrefixedBuffer(MovieIdentifier()); } inline void FinishMovieBuffer( diff --git a/tests/evolution_test/evolution_v1_generated.h b/tests/evolution_test/evolution_v1_generated.h index 91ae45d90b3..827d058aed0 100644 --- a/tests/evolution_test/evolution_v1_generated.h +++ b/tests/evolution_test/evolution_v1_generated.h @@ -102,8 +102,10 @@ template<> struct UnionTraits { static const Union enum_value = Union::TableB; }; -bool VerifyUnion(::flatbuffers::Verifier &verifier, const void *obj, Union type); -bool VerifyUnionVector(::flatbuffers::Verifier &verifier, const ::flatbuffers::Vector<::flatbuffers::Offset> *values, const ::flatbuffers::Vector *types); +template +bool VerifyUnion(::flatbuffers::VerifierTemplate &verifier, const void *obj, Union type); +template +bool VerifyUnionVector(::flatbuffers::VerifierTemplate &verifier, const ::flatbuffers::Vector<::flatbuffers::Offset> *values, const ::flatbuffers::Vector *types); FLATBUFFERS_MANUALLY_ALIGNED_STRUCT(8) Struct FLATBUFFERS_FINAL_CLASS { private: @@ -156,7 +158,8 @@ struct TableA FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table { int32_t b() const { return GetField(VT_B, 0); } - bool Verify(::flatbuffers::Verifier &verifier) const { + template + bool Verify(::flatbuffers::VerifierTemplate &verifier) const { return VerifyTableStart(verifier) && VerifyField(verifier, VT_A, 4) && VerifyField(verifier, VT_B, 4) && @@ -203,7 +206,8 @@ struct TableB FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table { int32_t a() const { return GetField(VT_A, 0); } - bool Verify(::flatbuffers::Verifier &verifier) const { + template + bool Verify(::flatbuffers::VerifierTemplate &verifier) const { return VerifyTableStart(verifier) && VerifyField(verifier, VT_A, 4) && verifier.EndTable(); @@ -302,7 +306,8 @@ struct Root FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table { const Evolution::V1::TableB *j_as_TableB() const { return j_type() == Evolution::V1::Union::TableB ? static_cast(j()) : nullptr; } - bool Verify(::flatbuffers::Verifier &verifier) const { + template + bool Verify(::flatbuffers::VerifierTemplate &verifier) const { return VerifyTableStart(verifier) && VerifyField(verifier, VT_A, 4) && VerifyField(verifier, VT_B, 1) && @@ -455,7 +460,8 @@ inline ::flatbuffers::Offset CreateRootDirect( j); } -inline bool VerifyUnion(::flatbuffers::Verifier &verifier, const void *obj, Union type) { +template +inline bool VerifyUnion(::flatbuffers::VerifierTemplate &verifier, const void *obj, Union type) { switch (type) { case Union::NONE: { return true; @@ -472,7 +478,8 @@ inline bool VerifyUnion(::flatbuffers::Verifier &verifier, const void *obj, Unio } } -inline bool VerifyUnionVector(::flatbuffers::Verifier &verifier, const ::flatbuffers::Vector<::flatbuffers::Offset> *values, const ::flatbuffers::Vector *types) { +template +inline bool VerifyUnionVector(::flatbuffers::VerifierTemplate &verifier, const ::flatbuffers::Vector<::flatbuffers::Offset> *values, const ::flatbuffers::Vector *types) { if (!values || !types) return !values && !types; if (values->size() != types->size()) return false; for (::flatbuffers::uoffset_t i = 0; i < values->size(); ++i) { @@ -492,14 +499,16 @@ inline const Evolution::V1::Root *GetSizePrefixedRoot(const void *buf) { return ::flatbuffers::GetSizePrefixedRoot(buf); } +template inline bool VerifyRootBuffer( - ::flatbuffers::Verifier &verifier) { - return verifier.VerifyBuffer(nullptr); + ::flatbuffers::VerifierTemplate &verifier) { + return verifier.template VerifyBuffer(nullptr); } +template inline bool VerifySizePrefixedRootBuffer( - ::flatbuffers::Verifier &verifier) { - return verifier.VerifySizePrefixedBuffer(nullptr); + ::flatbuffers::VerifierTemplate &verifier) { + return verifier.template VerifySizePrefixedBuffer(nullptr); } inline void FinishRootBuffer( diff --git a/tests/evolution_test/evolution_v2_generated.h b/tests/evolution_test/evolution_v2_generated.h index 8a6dcf050ab..885830d4caa 100644 --- a/tests/evolution_test/evolution_v2_generated.h +++ b/tests/evolution_test/evolution_v2_generated.h @@ -118,8 +118,10 @@ template<> struct UnionTraits { static const Union enum_value = Union::TableC; }; -bool VerifyUnion(::flatbuffers::Verifier &verifier, const void *obj, Union type); -bool VerifyUnionVector(::flatbuffers::Verifier &verifier, const ::flatbuffers::Vector<::flatbuffers::Offset> *values, const ::flatbuffers::Vector *types); +template +bool VerifyUnion(::flatbuffers::VerifierTemplate &verifier, const void *obj, Union type); +template +bool VerifyUnionVector(::flatbuffers::VerifierTemplate &verifier, const ::flatbuffers::Vector<::flatbuffers::Offset> *values, const ::flatbuffers::Vector *types); FLATBUFFERS_MANUALLY_ALIGNED_STRUCT(8) Struct FLATBUFFERS_FINAL_CLASS { private: @@ -176,7 +178,8 @@ struct TableA FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table { const ::flatbuffers::String *c() const { return GetPointer(VT_C); } - bool Verify(::flatbuffers::Verifier &verifier) const { + template + bool Verify(::flatbuffers::VerifierTemplate &verifier) const { return VerifyTableStart(verifier) && VerifyField(verifier, VT_A, 4) && VerifyField(verifier, VT_B, 4) && @@ -243,7 +246,8 @@ struct TableB FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table { int32_t a() const { return GetField(VT_A, 0); } - bool Verify(::flatbuffers::Verifier &verifier) const { + template + bool Verify(::flatbuffers::VerifierTemplate &verifier) const { return VerifyTableStart(verifier) && VerifyField(verifier, VT_A, 4) && verifier.EndTable(); @@ -288,7 +292,8 @@ struct TableC FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table { const ::flatbuffers::String *b() const { return GetPointer(VT_B); } - bool Verify(::flatbuffers::Verifier &verifier) const { + template + bool Verify(::flatbuffers::VerifierTemplate &verifier) const { return VerifyTableStart(verifier) && VerifyField(verifier, VT_A, 8) && VerifyOffset(verifier, VT_B) && @@ -397,7 +402,8 @@ struct Root FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table { uint8_t l() const { return GetField(VT_L, 56); } - bool Verify(::flatbuffers::Verifier &verifier) const { + template + bool Verify(::flatbuffers::VerifierTemplate &verifier) const { return VerifyTableStart(verifier) && VerifyField(verifier, VT_B, 1) && VerifyField(verifier, VT_C_TYPE, 1) && @@ -538,7 +544,8 @@ inline ::flatbuffers::Offset CreateRootDirect( l); } -inline bool VerifyUnion(::flatbuffers::Verifier &verifier, const void *obj, Union type) { +template +inline bool VerifyUnion(::flatbuffers::VerifierTemplate &verifier, const void *obj, Union type) { switch (type) { case Union::NONE: { return true; @@ -559,7 +566,8 @@ inline bool VerifyUnion(::flatbuffers::Verifier &verifier, const void *obj, Unio } } -inline bool VerifyUnionVector(::flatbuffers::Verifier &verifier, const ::flatbuffers::Vector<::flatbuffers::Offset> *values, const ::flatbuffers::Vector *types) { +template +inline bool VerifyUnionVector(::flatbuffers::VerifierTemplate &verifier, const ::flatbuffers::Vector<::flatbuffers::Offset> *values, const ::flatbuffers::Vector *types) { if (!values || !types) return !values && !types; if (values->size() != types->size()) return false; for (::flatbuffers::uoffset_t i = 0; i < values->size(); ++i) { @@ -579,14 +587,16 @@ inline const Evolution::V2::Root *GetSizePrefixedRoot(const void *buf) { return ::flatbuffers::GetSizePrefixedRoot(buf); } +template inline bool VerifyRootBuffer( - ::flatbuffers::Verifier &verifier) { - return verifier.VerifyBuffer(nullptr); + ::flatbuffers::VerifierTemplate &verifier) { + return verifier.template VerifyBuffer(nullptr); } +template inline bool VerifySizePrefixedRootBuffer( - ::flatbuffers::Verifier &verifier) { - return verifier.VerifySizePrefixedBuffer(nullptr); + ::flatbuffers::VerifierTemplate &verifier) { + return verifier.template VerifySizePrefixedBuffer(nullptr); } inline void FinishRootBuffer( diff --git a/tests/fuzzer/flatbuffers_verifier_fuzzer.cc b/tests/fuzzer/flatbuffers_verifier_fuzzer.cc index f8a7b4c82ba..94168b54a9c 100644 --- a/tests/fuzzer/flatbuffers_verifier_fuzzer.cc +++ b/tests/fuzzer/flatbuffers_verifier_fuzzer.cc @@ -11,5 +11,7 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { flatbuffers::Verifier verifier(data, size); MyGame::Example::VerifyMonsterBuffer(verifier); + flatbuffers::SizeVerifier size_verifier(data, size); + MyGame::Example::VerifyMonsterBuffer(size_verifier); return 0; } diff --git a/tests/key_field/key_field_sample_generated.h b/tests/key_field/key_field_sample_generated.h index 15613f0494a..cba74688fa6 100644 --- a/tests/key_field/key_field_sample_generated.h +++ b/tests/key_field/key_field_sample_generated.h @@ -634,7 +634,8 @@ struct FooTable FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table { ::flatbuffers::Vector *mutable_h() { return GetPointer<::flatbuffers::Vector *>(VT_H); } - bool Verify(::flatbuffers::Verifier &verifier) const { + template + bool Verify(::flatbuffers::VerifierTemplate &verifier) const { return VerifyTableStart(verifier) && VerifyField(verifier, VT_A, 4) && VerifyField(verifier, VT_B, 4) && @@ -990,14 +991,16 @@ inline keyfield::sample::FooTable *GetMutableSizePrefixedFooTable(void *buf) { return ::flatbuffers::GetMutableSizePrefixedRoot(buf); } +template inline bool VerifyFooTableBuffer( - ::flatbuffers::Verifier &verifier) { - return verifier.VerifyBuffer(nullptr); + ::flatbuffers::VerifierTemplate &verifier) { + return verifier.template VerifyBuffer(nullptr); } +template inline bool VerifySizePrefixedFooTableBuffer( - ::flatbuffers::Verifier &verifier) { - return verifier.VerifySizePrefixedBuffer(nullptr); + ::flatbuffers::VerifierTemplate &verifier) { + return verifier.template VerifySizePrefixedBuffer(nullptr); } inline void FinishFooTableBuffer( diff --git a/tests/monster_extra_generated.h b/tests/monster_extra_generated.h index 22e8d288cec..a87f7d92438 100644 --- a/tests/monster_extra_generated.h +++ b/tests/monster_extra_generated.h @@ -116,7 +116,8 @@ struct MonsterExtra FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table { ::flatbuffers::Vector *mutable_fvec() { return GetPointer<::flatbuffers::Vector *>(VT_FVEC); } - bool Verify(::flatbuffers::Verifier &verifier) const { + template + bool Verify(::flatbuffers::VerifierTemplate &verifier) const { return VerifyTableStart(verifier) && VerifyField(verifier, VT_D0, 8) && VerifyField(verifier, VT_D1, 8) && @@ -374,14 +375,16 @@ inline bool SizePrefixedMonsterExtraBufferHasIdentifier(const void *buf) { buf, MonsterExtraIdentifier(), true); } +template inline bool VerifyMonsterExtraBuffer( - ::flatbuffers::Verifier &verifier) { - return verifier.VerifyBuffer(MonsterExtraIdentifier()); + ::flatbuffers::VerifierTemplate &verifier) { + return verifier.template VerifyBuffer(MonsterExtraIdentifier()); } +template inline bool VerifySizePrefixedMonsterExtraBuffer( - ::flatbuffers::Verifier &verifier) { - return verifier.VerifySizePrefixedBuffer(MonsterExtraIdentifier()); + ::flatbuffers::VerifierTemplate &verifier) { + return verifier.template VerifySizePrefixedBuffer(MonsterExtraIdentifier()); } inline const char *MonsterExtraExtension() { diff --git a/tests/monster_test_generated.h b/tests/monster_test_generated.h index ffc23672254..594670baa7b 100644 --- a/tests/monster_test_generated.h +++ b/tests/monster_test_generated.h @@ -386,8 +386,10 @@ inline bool operator!=(const AnyUnion &lhs, const AnyUnion &rhs) { return !(lhs == rhs); } -bool VerifyAny(::flatbuffers::Verifier &verifier, const void *obj, Any type); -bool VerifyAnyVector(::flatbuffers::Verifier &verifier, const ::flatbuffers::Vector<::flatbuffers::Offset> *values, const ::flatbuffers::Vector *types); +template +bool VerifyAny(::flatbuffers::VerifierTemplate &verifier, const void *obj, Any type); +template +bool VerifyAnyVector(::flatbuffers::VerifierTemplate &verifier, const ::flatbuffers::Vector<::flatbuffers::Offset> *values, const ::flatbuffers::Vector *types); enum AnyUniqueAliases : uint8_t { AnyUniqueAliases_NONE = 0, @@ -542,8 +544,10 @@ inline bool operator!=(const AnyUniqueAliasesUnion &lhs, const AnyUniqueAliasesU return !(lhs == rhs); } -bool VerifyAnyUniqueAliases(::flatbuffers::Verifier &verifier, const void *obj, AnyUniqueAliases type); -bool VerifyAnyUniqueAliasesVector(::flatbuffers::Verifier &verifier, const ::flatbuffers::Vector<::flatbuffers::Offset> *values, const ::flatbuffers::Vector *types); +template +bool VerifyAnyUniqueAliases(::flatbuffers::VerifierTemplate &verifier, const void *obj, AnyUniqueAliases type); +template +bool VerifyAnyUniqueAliasesVector(::flatbuffers::VerifierTemplate &verifier, const ::flatbuffers::Vector<::flatbuffers::Offset> *values, const ::flatbuffers::Vector *types); enum AnyAmbiguousAliases : uint8_t { AnyAmbiguousAliases_NONE = 0, @@ -656,8 +660,10 @@ inline bool operator!=(const AnyAmbiguousAliasesUnion &lhs, const AnyAmbiguousAl return !(lhs == rhs); } -bool VerifyAnyAmbiguousAliases(::flatbuffers::Verifier &verifier, const void *obj, AnyAmbiguousAliases type); -bool VerifyAnyAmbiguousAliasesVector(::flatbuffers::Verifier &verifier, const ::flatbuffers::Vector<::flatbuffers::Offset> *values, const ::flatbuffers::Vector *types); +template +bool VerifyAnyAmbiguousAliases(::flatbuffers::VerifierTemplate &verifier, const void *obj, AnyAmbiguousAliases type); +template +bool VerifyAnyAmbiguousAliasesVector(::flatbuffers::VerifierTemplate &verifier, const ::flatbuffers::Vector<::flatbuffers::Offset> *values, const ::flatbuffers::Vector *types); FLATBUFFERS_MANUALLY_ALIGNED_STRUCT(2) Test FLATBUFFERS_FINAL_CLASS { private: @@ -953,7 +959,8 @@ struct InParentNamespace FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table static const ::flatbuffers::TypeTable *MiniReflectTypeTable() { return InParentNamespaceTypeTable(); } - bool Verify(::flatbuffers::Verifier &verifier) const { + template + bool Verify(::flatbuffers::VerifierTemplate &verifier) const { return VerifyTableStart(verifier) && verifier.EndTable(); } @@ -998,7 +1005,8 @@ struct Monster FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table { static const ::flatbuffers::TypeTable *MiniReflectTypeTable() { return MonsterTypeTable(); } - bool Verify(::flatbuffers::Verifier &verifier) const { + template + bool Verify(::flatbuffers::VerifierTemplate &verifier) const { return VerifyTableStart(verifier) && verifier.EndTable(); } @@ -1055,7 +1063,8 @@ struct TestSimpleTableWithEnum FLATBUFFERS_FINAL_CLASS : private ::flatbuffers:: bool mutate_color(MyGame::Example::Color _color = static_cast(2)) { return SetField(VT_COLOR, static_cast(_color), 2); } - bool Verify(::flatbuffers::Verifier &verifier) const { + template + bool Verify(::flatbuffers::VerifierTemplate &verifier) const { return VerifyTableStart(verifier) && VerifyField(verifier, VT_COLOR, 1) && verifier.EndTable(); @@ -1136,7 +1145,8 @@ struct Stat FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table { int KeyCompareWithValue(uint16_t _count) const { return static_cast(count() > _count) - static_cast(count() < _count); } - bool Verify(::flatbuffers::Verifier &verifier) const { + template + bool Verify(::flatbuffers::VerifierTemplate &verifier) const { return VerifyTableStart(verifier) && VerifyOffset(verifier, VT_ID) && verifier.VerifyString(id()) && @@ -1227,7 +1237,8 @@ struct Referrable FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table { int KeyCompareWithValue(uint64_t _id) const { return static_cast(id() > _id) - static_cast(id() < _id); } - bool Verify(::flatbuffers::Verifier &verifier) const { + template + bool Verify(::flatbuffers::VerifierTemplate &verifier) const { return VerifyTableStart(verifier) && VerifyField(verifier, VT_ID, 8) && verifier.EndTable(); @@ -1817,7 +1828,8 @@ struct Monster FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table { bool mutate_double_inf_default(double _double_inf_default = std::numeric_limits::infinity()) { return SetField(VT_DOUBLE_INF_DEFAULT, _double_inf_default, std::numeric_limits::infinity()); } - bool Verify(::flatbuffers::Verifier &verifier) const { + template + bool Verify(::flatbuffers::VerifierTemplate &verifier) const { return VerifyTableStart(verifier) && VerifyField(verifier, VT_POS, 8) && VerifyField(verifier, VT_MANA, 2) && @@ -1842,7 +1854,7 @@ struct Monster FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table { verifier.VerifyTable(enemy()) && VerifyOffset(verifier, VT_TESTNESTEDFLATBUFFER) && verifier.VerifyVector(testnestedflatbuffer()) && - verifier.VerifyNestedFlatBuffer(testnestedflatbuffer(), nullptr) && + verifier.template VerifyNestedFlatBuffer(testnestedflatbuffer(), nullptr) && VerifyOffset(verifier, VT_TESTEMPTY) && verifier.VerifyTable(testempty()) && VerifyField(verifier, VT_TESTBOOL, 1) && @@ -1901,7 +1913,7 @@ struct Monster FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table { VerifyField(verifier, VT_SIGNED_ENUM, 1) && VerifyOffset(verifier, VT_TESTREQUIREDNESTEDFLATBUFFER) && verifier.VerifyVector(testrequirednestedflatbuffer()) && - verifier.VerifyNestedFlatBuffer(testrequirednestedflatbuffer(), nullptr) && + verifier.template VerifyNestedFlatBuffer(testrequirednestedflatbuffer(), nullptr) && VerifyOffset(verifier, VT_SCALAR_KEY_SORTED_TABLES) && verifier.VerifyVector(scalar_key_sorted_tables()) && verifier.VerifyVectorOfTables(scalar_key_sorted_tables()) && @@ -2534,7 +2546,8 @@ struct TypeAliases FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table { ::flatbuffers::Vector *mutable_vf64() { return GetPointer<::flatbuffers::Vector *>(VT_VF64); } - bool Verify(::flatbuffers::Verifier &verifier) const { + template + bool Verify(::flatbuffers::VerifierTemplate &verifier) const { return VerifyTableStart(verifier) && VerifyField(verifier, VT_I8, 1) && VerifyField(verifier, VT_U8, 1) && @@ -3348,7 +3361,8 @@ inline ::flatbuffers::Offset TypeAliases::Pack(::flatbuffers::FlatB _vf64); } -inline bool VerifyAny(::flatbuffers::Verifier &verifier, const void *obj, Any type) { +template +inline bool VerifyAny(::flatbuffers::VerifierTemplate &verifier, const void *obj, Any type) { switch (type) { case Any_NONE: { return true; @@ -3369,7 +3383,8 @@ inline bool VerifyAny(::flatbuffers::Verifier &verifier, const void *obj, Any ty } } -inline bool VerifyAnyVector(::flatbuffers::Verifier &verifier, const ::flatbuffers::Vector<::flatbuffers::Offset> *values, const ::flatbuffers::Vector *types) { +template +inline bool VerifyAnyVector(::flatbuffers::VerifierTemplate &verifier, const ::flatbuffers::Vector<::flatbuffers::Offset> *values, const ::flatbuffers::Vector *types) { if (!values || !types) return !values && !types; if (values->size() != types->size()) return false; for (::flatbuffers::uoffset_t i = 0; i < values->size(); ++i) { @@ -3461,7 +3476,8 @@ inline void AnyUnion::Reset() { type = Any_NONE; } -inline bool VerifyAnyUniqueAliases(::flatbuffers::Verifier &verifier, const void *obj, AnyUniqueAliases type) { +template +inline bool VerifyAnyUniqueAliases(::flatbuffers::VerifierTemplate &verifier, const void *obj, AnyUniqueAliases type) { switch (type) { case AnyUniqueAliases_NONE: { return true; @@ -3482,7 +3498,8 @@ inline bool VerifyAnyUniqueAliases(::flatbuffers::Verifier &verifier, const void } } -inline bool VerifyAnyUniqueAliasesVector(::flatbuffers::Verifier &verifier, const ::flatbuffers::Vector<::flatbuffers::Offset> *values, const ::flatbuffers::Vector *types) { +template +inline bool VerifyAnyUniqueAliasesVector(::flatbuffers::VerifierTemplate &verifier, const ::flatbuffers::Vector<::flatbuffers::Offset> *values, const ::flatbuffers::Vector *types) { if (!values || !types) return !values && !types; if (values->size() != types->size()) return false; for (::flatbuffers::uoffset_t i = 0; i < values->size(); ++i) { @@ -3574,7 +3591,8 @@ inline void AnyUniqueAliasesUnion::Reset() { type = AnyUniqueAliases_NONE; } -inline bool VerifyAnyAmbiguousAliases(::flatbuffers::Verifier &verifier, const void *obj, AnyAmbiguousAliases type) { +template +inline bool VerifyAnyAmbiguousAliases(::flatbuffers::VerifierTemplate &verifier, const void *obj, AnyAmbiguousAliases type) { switch (type) { case AnyAmbiguousAliases_NONE: { return true; @@ -3595,7 +3613,8 @@ inline bool VerifyAnyAmbiguousAliases(::flatbuffers::Verifier &verifier, const v } } -inline bool VerifyAnyAmbiguousAliasesVector(::flatbuffers::Verifier &verifier, const ::flatbuffers::Vector<::flatbuffers::Offset> *values, const ::flatbuffers::Vector *types) { +template +inline bool VerifyAnyAmbiguousAliasesVector(::flatbuffers::VerifierTemplate &verifier, const ::flatbuffers::Vector<::flatbuffers::Offset> *values, const ::flatbuffers::Vector *types) { if (!values || !types) return !values && !types; if (values->size() != types->size()) return false; for (::flatbuffers::uoffset_t i = 0; i < values->size(); ++i) { @@ -4204,14 +4223,16 @@ inline bool SizePrefixedMonsterBufferHasIdentifier(const void *buf) { buf, MonsterIdentifier(), true); } +template inline bool VerifyMonsterBuffer( - ::flatbuffers::Verifier &verifier) { - return verifier.VerifyBuffer(MonsterIdentifier()); + ::flatbuffers::VerifierTemplate &verifier) { + return verifier.template VerifyBuffer(MonsterIdentifier()); } +template inline bool VerifySizePrefixedMonsterBuffer( - ::flatbuffers::Verifier &verifier) { - return verifier.VerifySizePrefixedBuffer(MonsterIdentifier()); + ::flatbuffers::VerifierTemplate &verifier) { + return verifier.template VerifySizePrefixedBuffer(MonsterIdentifier()); } inline const char *MonsterExtension() { 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 942e88bc667..b3db30d3be2 100644 --- a/tests/monster_test_suffix/ext_only/monster_test_generated.hpp +++ b/tests/monster_test_suffix/ext_only/monster_test_generated.hpp @@ -383,8 +383,10 @@ inline bool operator!=(const AnyUnion &lhs, const AnyUnion &rhs) { return !(lhs == rhs); } -bool VerifyAny(::flatbuffers::Verifier &verifier, const void *obj, Any type); -bool VerifyAnyVector(::flatbuffers::Verifier &verifier, const ::flatbuffers::Vector<::flatbuffers::Offset> *values, const ::flatbuffers::Vector *types); +template +bool VerifyAny(::flatbuffers::VerifierTemplate &verifier, const void *obj, Any type); +template +bool VerifyAnyVector(::flatbuffers::VerifierTemplate &verifier, const ::flatbuffers::Vector<::flatbuffers::Offset> *values, const ::flatbuffers::Vector *types); enum AnyUniqueAliases : uint8_t { AnyUniqueAliases_NONE = 0, @@ -539,8 +541,10 @@ inline bool operator!=(const AnyUniqueAliasesUnion &lhs, const AnyUniqueAliasesU return !(lhs == rhs); } -bool VerifyAnyUniqueAliases(::flatbuffers::Verifier &verifier, const void *obj, AnyUniqueAliases type); -bool VerifyAnyUniqueAliasesVector(::flatbuffers::Verifier &verifier, const ::flatbuffers::Vector<::flatbuffers::Offset> *values, const ::flatbuffers::Vector *types); +template +bool VerifyAnyUniqueAliases(::flatbuffers::VerifierTemplate &verifier, const void *obj, AnyUniqueAliases type); +template +bool VerifyAnyUniqueAliasesVector(::flatbuffers::VerifierTemplate &verifier, const ::flatbuffers::Vector<::flatbuffers::Offset> *values, const ::flatbuffers::Vector *types); enum AnyAmbiguousAliases : uint8_t { AnyAmbiguousAliases_NONE = 0, @@ -653,8 +657,10 @@ inline bool operator!=(const AnyAmbiguousAliasesUnion &lhs, const AnyAmbiguousAl return !(lhs == rhs); } -bool VerifyAnyAmbiguousAliases(::flatbuffers::Verifier &verifier, const void *obj, AnyAmbiguousAliases type); -bool VerifyAnyAmbiguousAliasesVector(::flatbuffers::Verifier &verifier, const ::flatbuffers::Vector<::flatbuffers::Offset> *values, const ::flatbuffers::Vector *types); +template +bool VerifyAnyAmbiguousAliases(::flatbuffers::VerifierTemplate &verifier, const void *obj, AnyAmbiguousAliases type); +template +bool VerifyAnyAmbiguousAliasesVector(::flatbuffers::VerifierTemplate &verifier, const ::flatbuffers::Vector<::flatbuffers::Offset> *values, const ::flatbuffers::Vector *types); FLATBUFFERS_MANUALLY_ALIGNED_STRUCT(2) Test FLATBUFFERS_FINAL_CLASS { private: @@ -949,7 +955,8 @@ struct InParentNamespace FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table static const ::flatbuffers::TypeTable *MiniReflectTypeTable() { return InParentNamespaceTypeTable(); } - bool Verify(::flatbuffers::Verifier &verifier) const { + template + bool Verify(::flatbuffers::VerifierTemplate &verifier) const { return VerifyTableStart(verifier) && verifier.EndTable(); } @@ -993,7 +1000,8 @@ struct Monster FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table { static const ::flatbuffers::TypeTable *MiniReflectTypeTable() { return MonsterTypeTable(); } - bool Verify(::flatbuffers::Verifier &verifier) const { + template + bool Verify(::flatbuffers::VerifierTemplate &verifier) const { return VerifyTableStart(verifier) && verifier.EndTable(); } @@ -1049,7 +1057,8 @@ struct TestSimpleTableWithEnum FLATBUFFERS_FINAL_CLASS : private ::flatbuffers:: bool mutate_color(MyGame::Example::Color _color = static_cast(2)) { return SetField(VT_COLOR, static_cast(_color), 2); } - bool Verify(::flatbuffers::Verifier &verifier) const { + template + bool Verify(::flatbuffers::VerifierTemplate &verifier) const { return VerifyTableStart(verifier) && VerifyField(verifier, VT_COLOR, 1) && verifier.EndTable(); @@ -1129,7 +1138,8 @@ struct Stat FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table { int KeyCompareWithValue(uint16_t _count) const { return static_cast(count() > _count) - static_cast(count() < _count); } - bool Verify(::flatbuffers::Verifier &verifier) const { + template + bool Verify(::flatbuffers::VerifierTemplate &verifier) const { return VerifyTableStart(verifier) && VerifyOffset(verifier, VT_ID) && verifier.VerifyString(id()) && @@ -1219,7 +1229,8 @@ struct Referrable FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table { int KeyCompareWithValue(uint64_t _id) const { return static_cast(id() > _id) - static_cast(id() < _id); } - bool Verify(::flatbuffers::Verifier &verifier) const { + template + bool Verify(::flatbuffers::VerifierTemplate &verifier) const { return VerifyTableStart(verifier) && VerifyField(verifier, VT_ID, 8) && verifier.EndTable(); @@ -1808,7 +1819,8 @@ struct Monster FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table { bool mutate_double_inf_default(double _double_inf_default = std::numeric_limits::infinity()) { return SetField(VT_DOUBLE_INF_DEFAULT, _double_inf_default, std::numeric_limits::infinity()); } - bool Verify(::flatbuffers::Verifier &verifier) const { + template + bool Verify(::flatbuffers::VerifierTemplate &verifier) const { return VerifyTableStart(verifier) && VerifyField(verifier, VT_POS, 8) && VerifyField(verifier, VT_MANA, 2) && @@ -1833,7 +1845,7 @@ struct Monster FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table { verifier.VerifyTable(enemy()) && VerifyOffset(verifier, VT_TESTNESTEDFLATBUFFER) && verifier.VerifyVector(testnestedflatbuffer()) && - verifier.VerifyNestedFlatBuffer(testnestedflatbuffer(), nullptr) && + verifier.template VerifyNestedFlatBuffer(testnestedflatbuffer(), nullptr) && VerifyOffset(verifier, VT_TESTEMPTY) && verifier.VerifyTable(testempty()) && VerifyField(verifier, VT_TESTBOOL, 1) && @@ -1892,7 +1904,7 @@ struct Monster FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table { VerifyField(verifier, VT_SIGNED_ENUM, 1) && VerifyOffset(verifier, VT_TESTREQUIREDNESTEDFLATBUFFER) && verifier.VerifyVector(testrequirednestedflatbuffer()) && - verifier.VerifyNestedFlatBuffer(testrequirednestedflatbuffer(), nullptr) && + verifier.template VerifyNestedFlatBuffer(testrequirednestedflatbuffer(), nullptr) && VerifyOffset(verifier, VT_SCALAR_KEY_SORTED_TABLES) && verifier.VerifyVector(scalar_key_sorted_tables()) && verifier.VerifyVectorOfTables(scalar_key_sorted_tables()) && @@ -2524,7 +2536,8 @@ struct TypeAliases FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table { ::flatbuffers::Vector *mutable_vf64() { return GetPointer<::flatbuffers::Vector *>(VT_VF64); } - bool Verify(::flatbuffers::Verifier &verifier) const { + template + bool Verify(::flatbuffers::VerifierTemplate &verifier) const { return VerifyTableStart(verifier) && VerifyField(verifier, VT_I8, 1) && VerifyField(verifier, VT_U8, 1) && @@ -3338,7 +3351,8 @@ inline ::flatbuffers::Offset TypeAliases::Pack(::flatbuffers::FlatB _vf64); } -inline bool VerifyAny(::flatbuffers::Verifier &verifier, const void *obj, Any type) { +template +inline bool VerifyAny(::flatbuffers::VerifierTemplate &verifier, const void *obj, Any type) { switch (type) { case Any_NONE: { return true; @@ -3359,7 +3373,8 @@ inline bool VerifyAny(::flatbuffers::Verifier &verifier, const void *obj, Any ty } } -inline bool VerifyAnyVector(::flatbuffers::Verifier &verifier, const ::flatbuffers::Vector<::flatbuffers::Offset> *values, const ::flatbuffers::Vector *types) { +template +inline bool VerifyAnyVector(::flatbuffers::VerifierTemplate &verifier, const ::flatbuffers::Vector<::flatbuffers::Offset> *values, const ::flatbuffers::Vector *types) { if (!values || !types) return !values && !types; if (values->size() != types->size()) return false; for (::flatbuffers::uoffset_t i = 0; i < values->size(); ++i) { @@ -3451,7 +3466,8 @@ inline void AnyUnion::Reset() { type = Any_NONE; } -inline bool VerifyAnyUniqueAliases(::flatbuffers::Verifier &verifier, const void *obj, AnyUniqueAliases type) { +template +inline bool VerifyAnyUniqueAliases(::flatbuffers::VerifierTemplate &verifier, const void *obj, AnyUniqueAliases type) { switch (type) { case AnyUniqueAliases_NONE: { return true; @@ -3472,7 +3488,8 @@ inline bool VerifyAnyUniqueAliases(::flatbuffers::Verifier &verifier, const void } } -inline bool VerifyAnyUniqueAliasesVector(::flatbuffers::Verifier &verifier, const ::flatbuffers::Vector<::flatbuffers::Offset> *values, const ::flatbuffers::Vector *types) { +template +inline bool VerifyAnyUniqueAliasesVector(::flatbuffers::VerifierTemplate &verifier, const ::flatbuffers::Vector<::flatbuffers::Offset> *values, const ::flatbuffers::Vector *types) { if (!values || !types) return !values && !types; if (values->size() != types->size()) return false; for (::flatbuffers::uoffset_t i = 0; i < values->size(); ++i) { @@ -3564,7 +3581,8 @@ inline void AnyUniqueAliasesUnion::Reset() { type = AnyUniqueAliases_NONE; } -inline bool VerifyAnyAmbiguousAliases(::flatbuffers::Verifier &verifier, const void *obj, AnyAmbiguousAliases type) { +template +inline bool VerifyAnyAmbiguousAliases(::flatbuffers::VerifierTemplate &verifier, const void *obj, AnyAmbiguousAliases type) { switch (type) { case AnyAmbiguousAliases_NONE: { return true; @@ -3585,7 +3603,8 @@ inline bool VerifyAnyAmbiguousAliases(::flatbuffers::Verifier &verifier, const v } } -inline bool VerifyAnyAmbiguousAliasesVector(::flatbuffers::Verifier &verifier, const ::flatbuffers::Vector<::flatbuffers::Offset> *values, const ::flatbuffers::Vector *types) { +template +inline bool VerifyAnyAmbiguousAliasesVector(::flatbuffers::VerifierTemplate &verifier, const ::flatbuffers::Vector<::flatbuffers::Offset> *values, const ::flatbuffers::Vector *types) { if (!values || !types) return !values && !types; if (values->size() != types->size()) return false; for (::flatbuffers::uoffset_t i = 0; i < values->size(); ++i) { @@ -4194,14 +4213,16 @@ inline bool SizePrefixedMonsterBufferHasIdentifier(const void *buf) { buf, MonsterIdentifier(), true); } +template inline bool VerifyMonsterBuffer( - ::flatbuffers::Verifier &verifier) { - return verifier.VerifyBuffer(MonsterIdentifier()); + ::flatbuffers::VerifierTemplate &verifier) { + return verifier.template VerifyBuffer(MonsterIdentifier()); } +template inline bool VerifySizePrefixedMonsterBuffer( - ::flatbuffers::Verifier &verifier) { - return verifier.VerifySizePrefixedBuffer(MonsterIdentifier()); + ::flatbuffers::VerifierTemplate &verifier) { + return verifier.template VerifySizePrefixedBuffer(MonsterIdentifier()); } inline const char *MonsterExtension() { 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 942e88bc667..b3db30d3be2 100644 --- a/tests/monster_test_suffix/filesuffix_only/monster_test_suffix.h +++ b/tests/monster_test_suffix/filesuffix_only/monster_test_suffix.h @@ -383,8 +383,10 @@ inline bool operator!=(const AnyUnion &lhs, const AnyUnion &rhs) { return !(lhs == rhs); } -bool VerifyAny(::flatbuffers::Verifier &verifier, const void *obj, Any type); -bool VerifyAnyVector(::flatbuffers::Verifier &verifier, const ::flatbuffers::Vector<::flatbuffers::Offset> *values, const ::flatbuffers::Vector *types); +template +bool VerifyAny(::flatbuffers::VerifierTemplate &verifier, const void *obj, Any type); +template +bool VerifyAnyVector(::flatbuffers::VerifierTemplate &verifier, const ::flatbuffers::Vector<::flatbuffers::Offset> *values, const ::flatbuffers::Vector *types); enum AnyUniqueAliases : uint8_t { AnyUniqueAliases_NONE = 0, @@ -539,8 +541,10 @@ inline bool operator!=(const AnyUniqueAliasesUnion &lhs, const AnyUniqueAliasesU return !(lhs == rhs); } -bool VerifyAnyUniqueAliases(::flatbuffers::Verifier &verifier, const void *obj, AnyUniqueAliases type); -bool VerifyAnyUniqueAliasesVector(::flatbuffers::Verifier &verifier, const ::flatbuffers::Vector<::flatbuffers::Offset> *values, const ::flatbuffers::Vector *types); +template +bool VerifyAnyUniqueAliases(::flatbuffers::VerifierTemplate &verifier, const void *obj, AnyUniqueAliases type); +template +bool VerifyAnyUniqueAliasesVector(::flatbuffers::VerifierTemplate &verifier, const ::flatbuffers::Vector<::flatbuffers::Offset> *values, const ::flatbuffers::Vector *types); enum AnyAmbiguousAliases : uint8_t { AnyAmbiguousAliases_NONE = 0, @@ -653,8 +657,10 @@ inline bool operator!=(const AnyAmbiguousAliasesUnion &lhs, const AnyAmbiguousAl return !(lhs == rhs); } -bool VerifyAnyAmbiguousAliases(::flatbuffers::Verifier &verifier, const void *obj, AnyAmbiguousAliases type); -bool VerifyAnyAmbiguousAliasesVector(::flatbuffers::Verifier &verifier, const ::flatbuffers::Vector<::flatbuffers::Offset> *values, const ::flatbuffers::Vector *types); +template +bool VerifyAnyAmbiguousAliases(::flatbuffers::VerifierTemplate &verifier, const void *obj, AnyAmbiguousAliases type); +template +bool VerifyAnyAmbiguousAliasesVector(::flatbuffers::VerifierTemplate &verifier, const ::flatbuffers::Vector<::flatbuffers::Offset> *values, const ::flatbuffers::Vector *types); FLATBUFFERS_MANUALLY_ALIGNED_STRUCT(2) Test FLATBUFFERS_FINAL_CLASS { private: @@ -949,7 +955,8 @@ struct InParentNamespace FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table static const ::flatbuffers::TypeTable *MiniReflectTypeTable() { return InParentNamespaceTypeTable(); } - bool Verify(::flatbuffers::Verifier &verifier) const { + template + bool Verify(::flatbuffers::VerifierTemplate &verifier) const { return VerifyTableStart(verifier) && verifier.EndTable(); } @@ -993,7 +1000,8 @@ struct Monster FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table { static const ::flatbuffers::TypeTable *MiniReflectTypeTable() { return MonsterTypeTable(); } - bool Verify(::flatbuffers::Verifier &verifier) const { + template + bool Verify(::flatbuffers::VerifierTemplate &verifier) const { return VerifyTableStart(verifier) && verifier.EndTable(); } @@ -1049,7 +1057,8 @@ struct TestSimpleTableWithEnum FLATBUFFERS_FINAL_CLASS : private ::flatbuffers:: bool mutate_color(MyGame::Example::Color _color = static_cast(2)) { return SetField(VT_COLOR, static_cast(_color), 2); } - bool Verify(::flatbuffers::Verifier &verifier) const { + template + bool Verify(::flatbuffers::VerifierTemplate &verifier) const { return VerifyTableStart(verifier) && VerifyField(verifier, VT_COLOR, 1) && verifier.EndTable(); @@ -1129,7 +1138,8 @@ struct Stat FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table { int KeyCompareWithValue(uint16_t _count) const { return static_cast(count() > _count) - static_cast(count() < _count); } - bool Verify(::flatbuffers::Verifier &verifier) const { + template + bool Verify(::flatbuffers::VerifierTemplate &verifier) const { return VerifyTableStart(verifier) && VerifyOffset(verifier, VT_ID) && verifier.VerifyString(id()) && @@ -1219,7 +1229,8 @@ struct Referrable FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table { int KeyCompareWithValue(uint64_t _id) const { return static_cast(id() > _id) - static_cast(id() < _id); } - bool Verify(::flatbuffers::Verifier &verifier) const { + template + bool Verify(::flatbuffers::VerifierTemplate &verifier) const { return VerifyTableStart(verifier) && VerifyField(verifier, VT_ID, 8) && verifier.EndTable(); @@ -1808,7 +1819,8 @@ struct Monster FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table { bool mutate_double_inf_default(double _double_inf_default = std::numeric_limits::infinity()) { return SetField(VT_DOUBLE_INF_DEFAULT, _double_inf_default, std::numeric_limits::infinity()); } - bool Verify(::flatbuffers::Verifier &verifier) const { + template + bool Verify(::flatbuffers::VerifierTemplate &verifier) const { return VerifyTableStart(verifier) && VerifyField(verifier, VT_POS, 8) && VerifyField(verifier, VT_MANA, 2) && @@ -1833,7 +1845,7 @@ struct Monster FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table { verifier.VerifyTable(enemy()) && VerifyOffset(verifier, VT_TESTNESTEDFLATBUFFER) && verifier.VerifyVector(testnestedflatbuffer()) && - verifier.VerifyNestedFlatBuffer(testnestedflatbuffer(), nullptr) && + verifier.template VerifyNestedFlatBuffer(testnestedflatbuffer(), nullptr) && VerifyOffset(verifier, VT_TESTEMPTY) && verifier.VerifyTable(testempty()) && VerifyField(verifier, VT_TESTBOOL, 1) && @@ -1892,7 +1904,7 @@ struct Monster FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table { VerifyField(verifier, VT_SIGNED_ENUM, 1) && VerifyOffset(verifier, VT_TESTREQUIREDNESTEDFLATBUFFER) && verifier.VerifyVector(testrequirednestedflatbuffer()) && - verifier.VerifyNestedFlatBuffer(testrequirednestedflatbuffer(), nullptr) && + verifier.template VerifyNestedFlatBuffer(testrequirednestedflatbuffer(), nullptr) && VerifyOffset(verifier, VT_SCALAR_KEY_SORTED_TABLES) && verifier.VerifyVector(scalar_key_sorted_tables()) && verifier.VerifyVectorOfTables(scalar_key_sorted_tables()) && @@ -2524,7 +2536,8 @@ struct TypeAliases FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table { ::flatbuffers::Vector *mutable_vf64() { return GetPointer<::flatbuffers::Vector *>(VT_VF64); } - bool Verify(::flatbuffers::Verifier &verifier) const { + template + bool Verify(::flatbuffers::VerifierTemplate &verifier) const { return VerifyTableStart(verifier) && VerifyField(verifier, VT_I8, 1) && VerifyField(verifier, VT_U8, 1) && @@ -3338,7 +3351,8 @@ inline ::flatbuffers::Offset TypeAliases::Pack(::flatbuffers::FlatB _vf64); } -inline bool VerifyAny(::flatbuffers::Verifier &verifier, const void *obj, Any type) { +template +inline bool VerifyAny(::flatbuffers::VerifierTemplate &verifier, const void *obj, Any type) { switch (type) { case Any_NONE: { return true; @@ -3359,7 +3373,8 @@ inline bool VerifyAny(::flatbuffers::Verifier &verifier, const void *obj, Any ty } } -inline bool VerifyAnyVector(::flatbuffers::Verifier &verifier, const ::flatbuffers::Vector<::flatbuffers::Offset> *values, const ::flatbuffers::Vector *types) { +template +inline bool VerifyAnyVector(::flatbuffers::VerifierTemplate &verifier, const ::flatbuffers::Vector<::flatbuffers::Offset> *values, const ::flatbuffers::Vector *types) { if (!values || !types) return !values && !types; if (values->size() != types->size()) return false; for (::flatbuffers::uoffset_t i = 0; i < values->size(); ++i) { @@ -3451,7 +3466,8 @@ inline void AnyUnion::Reset() { type = Any_NONE; } -inline bool VerifyAnyUniqueAliases(::flatbuffers::Verifier &verifier, const void *obj, AnyUniqueAliases type) { +template +inline bool VerifyAnyUniqueAliases(::flatbuffers::VerifierTemplate &verifier, const void *obj, AnyUniqueAliases type) { switch (type) { case AnyUniqueAliases_NONE: { return true; @@ -3472,7 +3488,8 @@ inline bool VerifyAnyUniqueAliases(::flatbuffers::Verifier &verifier, const void } } -inline bool VerifyAnyUniqueAliasesVector(::flatbuffers::Verifier &verifier, const ::flatbuffers::Vector<::flatbuffers::Offset> *values, const ::flatbuffers::Vector *types) { +template +inline bool VerifyAnyUniqueAliasesVector(::flatbuffers::VerifierTemplate &verifier, const ::flatbuffers::Vector<::flatbuffers::Offset> *values, const ::flatbuffers::Vector *types) { if (!values || !types) return !values && !types; if (values->size() != types->size()) return false; for (::flatbuffers::uoffset_t i = 0; i < values->size(); ++i) { @@ -3564,7 +3581,8 @@ inline void AnyUniqueAliasesUnion::Reset() { type = AnyUniqueAliases_NONE; } -inline bool VerifyAnyAmbiguousAliases(::flatbuffers::Verifier &verifier, const void *obj, AnyAmbiguousAliases type) { +template +inline bool VerifyAnyAmbiguousAliases(::flatbuffers::VerifierTemplate &verifier, const void *obj, AnyAmbiguousAliases type) { switch (type) { case AnyAmbiguousAliases_NONE: { return true; @@ -3585,7 +3603,8 @@ inline bool VerifyAnyAmbiguousAliases(::flatbuffers::Verifier &verifier, const v } } -inline bool VerifyAnyAmbiguousAliasesVector(::flatbuffers::Verifier &verifier, const ::flatbuffers::Vector<::flatbuffers::Offset> *values, const ::flatbuffers::Vector *types) { +template +inline bool VerifyAnyAmbiguousAliasesVector(::flatbuffers::VerifierTemplate &verifier, const ::flatbuffers::Vector<::flatbuffers::Offset> *values, const ::flatbuffers::Vector *types) { if (!values || !types) return !values && !types; if (values->size() != types->size()) return false; for (::flatbuffers::uoffset_t i = 0; i < values->size(); ++i) { @@ -4194,14 +4213,16 @@ inline bool SizePrefixedMonsterBufferHasIdentifier(const void *buf) { buf, MonsterIdentifier(), true); } +template inline bool VerifyMonsterBuffer( - ::flatbuffers::Verifier &verifier) { - return verifier.VerifyBuffer(MonsterIdentifier()); + ::flatbuffers::VerifierTemplate &verifier) { + return verifier.template VerifyBuffer(MonsterIdentifier()); } +template inline bool VerifySizePrefixedMonsterBuffer( - ::flatbuffers::Verifier &verifier) { - return verifier.VerifySizePrefixedBuffer(MonsterIdentifier()); + ::flatbuffers::VerifierTemplate &verifier) { + return verifier.template VerifySizePrefixedBuffer(MonsterIdentifier()); } inline const char *MonsterExtension() { diff --git a/tests/monster_test_suffix/monster_test_suffix.hpp b/tests/monster_test_suffix/monster_test_suffix.hpp index 942e88bc667..b3db30d3be2 100644 --- a/tests/monster_test_suffix/monster_test_suffix.hpp +++ b/tests/monster_test_suffix/monster_test_suffix.hpp @@ -383,8 +383,10 @@ inline bool operator!=(const AnyUnion &lhs, const AnyUnion &rhs) { return !(lhs == rhs); } -bool VerifyAny(::flatbuffers::Verifier &verifier, const void *obj, Any type); -bool VerifyAnyVector(::flatbuffers::Verifier &verifier, const ::flatbuffers::Vector<::flatbuffers::Offset> *values, const ::flatbuffers::Vector *types); +template +bool VerifyAny(::flatbuffers::VerifierTemplate &verifier, const void *obj, Any type); +template +bool VerifyAnyVector(::flatbuffers::VerifierTemplate &verifier, const ::flatbuffers::Vector<::flatbuffers::Offset> *values, const ::flatbuffers::Vector *types); enum AnyUniqueAliases : uint8_t { AnyUniqueAliases_NONE = 0, @@ -539,8 +541,10 @@ inline bool operator!=(const AnyUniqueAliasesUnion &lhs, const AnyUniqueAliasesU return !(lhs == rhs); } -bool VerifyAnyUniqueAliases(::flatbuffers::Verifier &verifier, const void *obj, AnyUniqueAliases type); -bool VerifyAnyUniqueAliasesVector(::flatbuffers::Verifier &verifier, const ::flatbuffers::Vector<::flatbuffers::Offset> *values, const ::flatbuffers::Vector *types); +template +bool VerifyAnyUniqueAliases(::flatbuffers::VerifierTemplate &verifier, const void *obj, AnyUniqueAliases type); +template +bool VerifyAnyUniqueAliasesVector(::flatbuffers::VerifierTemplate &verifier, const ::flatbuffers::Vector<::flatbuffers::Offset> *values, const ::flatbuffers::Vector *types); enum AnyAmbiguousAliases : uint8_t { AnyAmbiguousAliases_NONE = 0, @@ -653,8 +657,10 @@ inline bool operator!=(const AnyAmbiguousAliasesUnion &lhs, const AnyAmbiguousAl return !(lhs == rhs); } -bool VerifyAnyAmbiguousAliases(::flatbuffers::Verifier &verifier, const void *obj, AnyAmbiguousAliases type); -bool VerifyAnyAmbiguousAliasesVector(::flatbuffers::Verifier &verifier, const ::flatbuffers::Vector<::flatbuffers::Offset> *values, const ::flatbuffers::Vector *types); +template +bool VerifyAnyAmbiguousAliases(::flatbuffers::VerifierTemplate &verifier, const void *obj, AnyAmbiguousAliases type); +template +bool VerifyAnyAmbiguousAliasesVector(::flatbuffers::VerifierTemplate &verifier, const ::flatbuffers::Vector<::flatbuffers::Offset> *values, const ::flatbuffers::Vector *types); FLATBUFFERS_MANUALLY_ALIGNED_STRUCT(2) Test FLATBUFFERS_FINAL_CLASS { private: @@ -949,7 +955,8 @@ struct InParentNamespace FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table static const ::flatbuffers::TypeTable *MiniReflectTypeTable() { return InParentNamespaceTypeTable(); } - bool Verify(::flatbuffers::Verifier &verifier) const { + template + bool Verify(::flatbuffers::VerifierTemplate &verifier) const { return VerifyTableStart(verifier) && verifier.EndTable(); } @@ -993,7 +1000,8 @@ struct Monster FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table { static const ::flatbuffers::TypeTable *MiniReflectTypeTable() { return MonsterTypeTable(); } - bool Verify(::flatbuffers::Verifier &verifier) const { + template + bool Verify(::flatbuffers::VerifierTemplate &verifier) const { return VerifyTableStart(verifier) && verifier.EndTable(); } @@ -1049,7 +1057,8 @@ struct TestSimpleTableWithEnum FLATBUFFERS_FINAL_CLASS : private ::flatbuffers:: bool mutate_color(MyGame::Example::Color _color = static_cast(2)) { return SetField(VT_COLOR, static_cast(_color), 2); } - bool Verify(::flatbuffers::Verifier &verifier) const { + template + bool Verify(::flatbuffers::VerifierTemplate &verifier) const { return VerifyTableStart(verifier) && VerifyField(verifier, VT_COLOR, 1) && verifier.EndTable(); @@ -1129,7 +1138,8 @@ struct Stat FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table { int KeyCompareWithValue(uint16_t _count) const { return static_cast(count() > _count) - static_cast(count() < _count); } - bool Verify(::flatbuffers::Verifier &verifier) const { + template + bool Verify(::flatbuffers::VerifierTemplate &verifier) const { return VerifyTableStart(verifier) && VerifyOffset(verifier, VT_ID) && verifier.VerifyString(id()) && @@ -1219,7 +1229,8 @@ struct Referrable FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table { int KeyCompareWithValue(uint64_t _id) const { return static_cast(id() > _id) - static_cast(id() < _id); } - bool Verify(::flatbuffers::Verifier &verifier) const { + template + bool Verify(::flatbuffers::VerifierTemplate &verifier) const { return VerifyTableStart(verifier) && VerifyField(verifier, VT_ID, 8) && verifier.EndTable(); @@ -1808,7 +1819,8 @@ struct Monster FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table { bool mutate_double_inf_default(double _double_inf_default = std::numeric_limits::infinity()) { return SetField(VT_DOUBLE_INF_DEFAULT, _double_inf_default, std::numeric_limits::infinity()); } - bool Verify(::flatbuffers::Verifier &verifier) const { + template + bool Verify(::flatbuffers::VerifierTemplate &verifier) const { return VerifyTableStart(verifier) && VerifyField(verifier, VT_POS, 8) && VerifyField(verifier, VT_MANA, 2) && @@ -1833,7 +1845,7 @@ struct Monster FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table { verifier.VerifyTable(enemy()) && VerifyOffset(verifier, VT_TESTNESTEDFLATBUFFER) && verifier.VerifyVector(testnestedflatbuffer()) && - verifier.VerifyNestedFlatBuffer(testnestedflatbuffer(), nullptr) && + verifier.template VerifyNestedFlatBuffer(testnestedflatbuffer(), nullptr) && VerifyOffset(verifier, VT_TESTEMPTY) && verifier.VerifyTable(testempty()) && VerifyField(verifier, VT_TESTBOOL, 1) && @@ -1892,7 +1904,7 @@ struct Monster FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table { VerifyField(verifier, VT_SIGNED_ENUM, 1) && VerifyOffset(verifier, VT_TESTREQUIREDNESTEDFLATBUFFER) && verifier.VerifyVector(testrequirednestedflatbuffer()) && - verifier.VerifyNestedFlatBuffer(testrequirednestedflatbuffer(), nullptr) && + verifier.template VerifyNestedFlatBuffer(testrequirednestedflatbuffer(), nullptr) && VerifyOffset(verifier, VT_SCALAR_KEY_SORTED_TABLES) && verifier.VerifyVector(scalar_key_sorted_tables()) && verifier.VerifyVectorOfTables(scalar_key_sorted_tables()) && @@ -2524,7 +2536,8 @@ struct TypeAliases FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table { ::flatbuffers::Vector *mutable_vf64() { return GetPointer<::flatbuffers::Vector *>(VT_VF64); } - bool Verify(::flatbuffers::Verifier &verifier) const { + template + bool Verify(::flatbuffers::VerifierTemplate &verifier) const { return VerifyTableStart(verifier) && VerifyField(verifier, VT_I8, 1) && VerifyField(verifier, VT_U8, 1) && @@ -3338,7 +3351,8 @@ inline ::flatbuffers::Offset TypeAliases::Pack(::flatbuffers::FlatB _vf64); } -inline bool VerifyAny(::flatbuffers::Verifier &verifier, const void *obj, Any type) { +template +inline bool VerifyAny(::flatbuffers::VerifierTemplate &verifier, const void *obj, Any type) { switch (type) { case Any_NONE: { return true; @@ -3359,7 +3373,8 @@ inline bool VerifyAny(::flatbuffers::Verifier &verifier, const void *obj, Any ty } } -inline bool VerifyAnyVector(::flatbuffers::Verifier &verifier, const ::flatbuffers::Vector<::flatbuffers::Offset> *values, const ::flatbuffers::Vector *types) { +template +inline bool VerifyAnyVector(::flatbuffers::VerifierTemplate &verifier, const ::flatbuffers::Vector<::flatbuffers::Offset> *values, const ::flatbuffers::Vector *types) { if (!values || !types) return !values && !types; if (values->size() != types->size()) return false; for (::flatbuffers::uoffset_t i = 0; i < values->size(); ++i) { @@ -3451,7 +3466,8 @@ inline void AnyUnion::Reset() { type = Any_NONE; } -inline bool VerifyAnyUniqueAliases(::flatbuffers::Verifier &verifier, const void *obj, AnyUniqueAliases type) { +template +inline bool VerifyAnyUniqueAliases(::flatbuffers::VerifierTemplate &verifier, const void *obj, AnyUniqueAliases type) { switch (type) { case AnyUniqueAliases_NONE: { return true; @@ -3472,7 +3488,8 @@ inline bool VerifyAnyUniqueAliases(::flatbuffers::Verifier &verifier, const void } } -inline bool VerifyAnyUniqueAliasesVector(::flatbuffers::Verifier &verifier, const ::flatbuffers::Vector<::flatbuffers::Offset> *values, const ::flatbuffers::Vector *types) { +template +inline bool VerifyAnyUniqueAliasesVector(::flatbuffers::VerifierTemplate &verifier, const ::flatbuffers::Vector<::flatbuffers::Offset> *values, const ::flatbuffers::Vector *types) { if (!values || !types) return !values && !types; if (values->size() != types->size()) return false; for (::flatbuffers::uoffset_t i = 0; i < values->size(); ++i) { @@ -3564,7 +3581,8 @@ inline void AnyUniqueAliasesUnion::Reset() { type = AnyUniqueAliases_NONE; } -inline bool VerifyAnyAmbiguousAliases(::flatbuffers::Verifier &verifier, const void *obj, AnyAmbiguousAliases type) { +template +inline bool VerifyAnyAmbiguousAliases(::flatbuffers::VerifierTemplate &verifier, const void *obj, AnyAmbiguousAliases type) { switch (type) { case AnyAmbiguousAliases_NONE: { return true; @@ -3585,7 +3603,8 @@ inline bool VerifyAnyAmbiguousAliases(::flatbuffers::Verifier &verifier, const v } } -inline bool VerifyAnyAmbiguousAliasesVector(::flatbuffers::Verifier &verifier, const ::flatbuffers::Vector<::flatbuffers::Offset> *values, const ::flatbuffers::Vector *types) { +template +inline bool VerifyAnyAmbiguousAliasesVector(::flatbuffers::VerifierTemplate &verifier, const ::flatbuffers::Vector<::flatbuffers::Offset> *values, const ::flatbuffers::Vector *types) { if (!values || !types) return !values && !types; if (values->size() != types->size()) return false; for (::flatbuffers::uoffset_t i = 0; i < values->size(); ++i) { @@ -4194,14 +4213,16 @@ inline bool SizePrefixedMonsterBufferHasIdentifier(const void *buf) { buf, MonsterIdentifier(), true); } +template inline bool VerifyMonsterBuffer( - ::flatbuffers::Verifier &verifier) { - return verifier.VerifyBuffer(MonsterIdentifier()); + ::flatbuffers::VerifierTemplate &verifier) { + return verifier.template VerifyBuffer(MonsterIdentifier()); } +template inline bool VerifySizePrefixedMonsterBuffer( - ::flatbuffers::Verifier &verifier) { - return verifier.VerifySizePrefixedBuffer(MonsterIdentifier()); + ::flatbuffers::VerifierTemplate &verifier) { + return verifier.template VerifySizePrefixedBuffer(MonsterIdentifier()); } inline const char *MonsterExtension() { diff --git a/tests/namespace_test/namespace_test1_generated.h b/tests/namespace_test/namespace_test1_generated.h index 19935ad7d66..50d0e487b55 100644 --- a/tests/namespace_test/namespace_test1_generated.h +++ b/tests/namespace_test/namespace_test1_generated.h @@ -138,8 +138,10 @@ inline bool operator!=(const UnionInNestedNSUnion &lhs, const UnionInNestedNSUni return !(lhs == rhs); } -bool VerifyUnionInNestedNS(::flatbuffers::Verifier &verifier, const void *obj, UnionInNestedNS type); -bool VerifyUnionInNestedNSVector(::flatbuffers::Verifier &verifier, const ::flatbuffers::Vector<::flatbuffers::Offset> *values, const ::flatbuffers::Vector *types); +template +bool VerifyUnionInNestedNS(::flatbuffers::VerifierTemplate &verifier, const void *obj, UnionInNestedNS type); +template +bool VerifyUnionInNestedNSVector(::flatbuffers::VerifierTemplate &verifier, const ::flatbuffers::Vector<::flatbuffers::Offset> *values, const ::flatbuffers::Vector *types); enum EnumInNestedNS : int8_t { EnumInNestedNS_A = 0, @@ -246,7 +248,8 @@ struct TableInNestedNS FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table { bool mutate_foo(int32_t _foo = 0) { return SetField(VT_FOO, _foo, 0); } - bool Verify(::flatbuffers::Verifier &verifier) const { + template + bool Verify(::flatbuffers::VerifierTemplate &verifier) const { return VerifyTableStart(verifier) && VerifyField(verifier, VT_FOO, 4) && verifier.EndTable(); @@ -321,7 +324,8 @@ inline ::flatbuffers::Offset TableInNestedNS::Pack(::flatbuffer _foo); } -inline bool VerifyUnionInNestedNS(::flatbuffers::Verifier &verifier, const void *obj, UnionInNestedNS type) { +template +inline bool VerifyUnionInNestedNS(::flatbuffers::VerifierTemplate &verifier, const void *obj, UnionInNestedNS type) { switch (type) { case UnionInNestedNS_NONE: { return true; @@ -334,7 +338,8 @@ inline bool VerifyUnionInNestedNS(::flatbuffers::Verifier &verifier, const void } } -inline bool VerifyUnionInNestedNSVector(::flatbuffers::Verifier &verifier, const ::flatbuffers::Vector<::flatbuffers::Offset> *values, const ::flatbuffers::Vector *types) { +template +inline bool VerifyUnionInNestedNSVector(::flatbuffers::VerifierTemplate &verifier, const ::flatbuffers::Vector<::flatbuffers::Offset> *values, const ::flatbuffers::Vector *types) { if (!values || !types) return !values && !types; if (values->size() != types->size()) return false; for (::flatbuffers::uoffset_t i = 0; i < values->size(); ++i) { diff --git a/tests/namespace_test/namespace_test2_generated.h b/tests/namespace_test/namespace_test2_generated.h index 08505e9911b..99c661057ef 100644 --- a/tests/namespace_test/namespace_test2_generated.h +++ b/tests/namespace_test/namespace_test2_generated.h @@ -126,7 +126,8 @@ struct TableInFirstNS FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table { NamespaceA::NamespaceB::StructInNestedNS *mutable_foo_struct() { return GetStruct(VT_FOO_STRUCT); } - bool Verify(::flatbuffers::Verifier &verifier) const { + template + bool Verify(::flatbuffers::VerifierTemplate &verifier) const { return VerifyTableStart(verifier) && VerifyOffset(verifier, VT_FOO_TABLE) && verifier.VerifyTable(foo_table()) && @@ -236,7 +237,8 @@ struct TableInC FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table { NamespaceA::SecondTableInA *mutable_refer_to_a2() { return GetPointer(VT_REFER_TO_A2); } - bool Verify(::flatbuffers::Verifier &verifier) const { + template + bool Verify(::flatbuffers::VerifierTemplate &verifier) const { return VerifyTableStart(verifier) && VerifyOffset(verifier, VT_REFER_TO_A1) && verifier.VerifyTable(refer_to_a1()) && @@ -316,7 +318,8 @@ struct SecondTableInA FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table { NamespaceC::TableInC *mutable_refer_to_c() { return GetPointer(VT_REFER_TO_C); } - bool Verify(::flatbuffers::Verifier &verifier) const { + template + bool Verify(::flatbuffers::VerifierTemplate &verifier) const { return VerifyTableStart(verifier) && VerifyOffset(verifier, VT_REFER_TO_C) && verifier.VerifyTable(refer_to_c()) && diff --git a/tests/native_inline_table_test_generated.h b/tests/native_inline_table_test_generated.h index 822497bc5b1..3bcdab09b7c 100644 --- a/tests/native_inline_table_test_generated.h +++ b/tests/native_inline_table_test_generated.h @@ -50,7 +50,8 @@ struct NativeInlineTable FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table bool mutate_a(int32_t _a = 0) { return SetField(VT_A, _a, 0); } - bool Verify(::flatbuffers::Verifier &verifier) const { + template + bool Verify(::flatbuffers::VerifierTemplate &verifier) const { return VerifyTableStart(verifier) && VerifyField(verifier, VT_A, 4) && verifier.EndTable(); @@ -108,7 +109,8 @@ struct TestNativeInlineTable FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Ta ::flatbuffers::Vector<::flatbuffers::Offset> *mutable_t() { return GetPointer<::flatbuffers::Vector<::flatbuffers::Offset> *>(VT_T); } - bool Verify(::flatbuffers::Verifier &verifier) const { + template + bool Verify(::flatbuffers::VerifierTemplate &verifier) const { return VerifyTableStart(verifier) && VerifyOffset(verifier, VT_T) && verifier.VerifyVector(t()) && diff --git a/tests/native_type_test_generated.h b/tests/native_type_test_generated.h index bdbf633e180..e128138487e 100644 --- a/tests/native_type_test_generated.h +++ b/tests/native_type_test_generated.h @@ -150,7 +150,8 @@ struct Matrix FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table { ::flatbuffers::Vector *mutable_values() { return GetPointer<::flatbuffers::Vector *>(VT_VALUES); } - bool Verify(::flatbuffers::Verifier &verifier) const { + template + bool Verify(::flatbuffers::VerifierTemplate &verifier) const { return VerifyTableStart(verifier) && VerifyField(verifier, VT_ROWS, 4) && VerifyField(verifier, VT_COLUMNS, 4) && @@ -278,7 +279,8 @@ struct ApplicationData FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table { ::flatbuffers::Vector<::flatbuffers::Offset> *mutable_matrices() { return GetPointer<::flatbuffers::Vector<::flatbuffers::Offset> *>(VT_MATRICES); } - bool Verify(::flatbuffers::Verifier &verifier) const { + template + bool Verify(::flatbuffers::VerifierTemplate &verifier) const { return VerifyTableStart(verifier) && VerifyOffset(verifier, VT_VECTORS) && verifier.VerifyVector(vectors()) && @@ -556,14 +558,16 @@ inline Geometry::ApplicationData *GetMutableSizePrefixedApplicationData(void *bu return ::flatbuffers::GetMutableSizePrefixedRoot(buf); } +template inline bool VerifyApplicationDataBuffer( - ::flatbuffers::Verifier &verifier) { - return verifier.VerifyBuffer(nullptr); + ::flatbuffers::VerifierTemplate &verifier) { + return verifier.template VerifyBuffer(nullptr); } +template inline bool VerifySizePrefixedApplicationDataBuffer( - ::flatbuffers::Verifier &verifier) { - return verifier.VerifySizePrefixedBuffer(nullptr); + ::flatbuffers::VerifierTemplate &verifier) { + return verifier.template VerifySizePrefixedBuffer(nullptr); } inline void FinishApplicationDataBuffer( diff --git a/tests/optional_scalars_generated.h b/tests/optional_scalars_generated.h index 4c289f387c6..08338dfe337 100644 --- a/tests/optional_scalars_generated.h +++ b/tests/optional_scalars_generated.h @@ -357,7 +357,8 @@ struct ScalarStuff FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table { bool mutate_default_enum(optional_scalars::OptionalByte _default_enum = static_cast(1)) { return SetField(VT_DEFAULT_ENUM, static_cast(_default_enum), 1); } - bool Verify(::flatbuffers::Verifier &verifier) const { + template + bool Verify(::flatbuffers::VerifierTemplate &verifier) const { return VerifyTableStart(verifier) && VerifyField(verifier, VT_JUST_I8, 1) && VerifyField(verifier, VT_MAYBE_I8, 1) && @@ -918,14 +919,16 @@ inline bool SizePrefixedScalarStuffBufferHasIdentifier(const void *buf) { buf, ScalarStuffIdentifier(), true); } +template inline bool VerifyScalarStuffBuffer( - ::flatbuffers::Verifier &verifier) { - return verifier.VerifyBuffer(ScalarStuffIdentifier()); + ::flatbuffers::VerifierTemplate &verifier) { + return verifier.template VerifyBuffer(ScalarStuffIdentifier()); } +template inline bool VerifySizePrefixedScalarStuffBuffer( - ::flatbuffers::Verifier &verifier) { - return verifier.VerifySizePrefixedBuffer(ScalarStuffIdentifier()); + ::flatbuffers::VerifierTemplate &verifier) { + return verifier.template VerifySizePrefixedBuffer(ScalarStuffIdentifier()); } inline const char *ScalarStuffExtension() { diff --git a/tests/test.cpp b/tests/test.cpp index fb0c7504e99..2dfa909223b 100644 --- a/tests/test.cpp +++ b/tests/test.cpp @@ -1279,6 +1279,35 @@ void NestedVerifierTest() { } } +void SizeVerifierTest() { + // Create a monster. + flatbuffers::FlatBufferBuilder builder; + FinishMonsterBuffer(builder, + CreateMonster(builder, nullptr, 0, 0, + builder.CreateString("NestedMonster"))); + size_t length = builder.GetSize(); + const uint8_t* data = builder.GetBufferPointer(); + + // Verify the monster, using SizeVerifier. + // We verify in several ways, using several different API functions/methods, + // to ensure that all of these APIs are tested. + flatbuffers::SizeVerifier size_verifier(data, + FLATBUFFERS_MAX_BUFFER_SIZE - 1); + { + TEST_EQ(true, VerifyMonsterBuffer(size_verifier)); + } + { + TEST_EQ(true, size_verifier.VerifyBuffer()); + } + { + const MyGame::Example::Monster* my_buffer = GetMonster(data); + TEST_EQ(true, my_buffer->Verify(size_verifier)); + } + + // Verify that the size verifier computed the correct size. + TEST_EQ(length, size_verifier.GetComputedSize()); +} + template void TestIterators(const std::vector& expected, const Container& tested) { TEST_ASSERT(tested.rbegin().base() == tested.end()); @@ -1750,6 +1779,7 @@ int FlatBufferTests(const std::string& tests_data_path) { FlatbuffersIteratorsTest(); WarningsAsErrorsTest(); NestedVerifierTest(); + SizeVerifierTest(); PrivateAnnotationsLeaks(); JsonUnsortedArrayTest(); VectorSpanTest(); diff --git a/tests/union_underlying_type_test_generated.h b/tests/union_underlying_type_test_generated.h index 6a1ef68f910..74ec1f9563b 100644 --- a/tests/union_underlying_type_test_generated.h +++ b/tests/union_underlying_type_test_generated.h @@ -194,8 +194,10 @@ inline bool operator!=(const ABCUnion &lhs, const ABCUnion &rhs) { return !(lhs == rhs); } -bool VerifyABC(::flatbuffers::Verifier &verifier, const void *obj, ABC type); -bool VerifyABCVector(::flatbuffers::Verifier &verifier, const ::flatbuffers::Vector<::flatbuffers::Offset> *values, const ::flatbuffers::Vector *types); +template +bool VerifyABC(::flatbuffers::VerifierTemplate &verifier, const void *obj, ABC type); +template +bool VerifyABCVector(::flatbuffers::VerifierTemplate &verifier, const ::flatbuffers::Vector<::flatbuffers::Offset> *values, const ::flatbuffers::Vector *types); struct AT : public ::flatbuffers::NativeTable { typedef A TableType; @@ -217,7 +219,8 @@ struct A FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table { bool mutate_a(int32_t _a = 0) { return SetField(VT_A, _a, 0); } - bool Verify(::flatbuffers::Verifier &verifier) const { + template + bool Verify(::flatbuffers::VerifierTemplate &verifier) const { return VerifyTableStart(verifier) && VerifyField(verifier, VT_A, 4) && verifier.EndTable(); @@ -275,7 +278,8 @@ struct B FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table { ::flatbuffers::String *mutable_b() { return GetPointer<::flatbuffers::String *>(VT_B); } - bool Verify(::flatbuffers::Verifier &verifier) const { + template + bool Verify(::flatbuffers::VerifierTemplate &verifier) const { return VerifyTableStart(verifier) && VerifyOffset(verifier, VT_B) && verifier.VerifyString(b()) && @@ -343,7 +347,8 @@ struct C FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table { bool mutate_c(bool _c = 0) { return SetField(VT_C, static_cast(_c), 0); } - bool Verify(::flatbuffers::Verifier &verifier) const { + template + bool Verify(::flatbuffers::VerifierTemplate &verifier) const { return VerifyTableStart(verifier) && VerifyField(verifier, VT_C, 1) && verifier.EndTable(); @@ -430,7 +435,8 @@ struct D FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table { ::flatbuffers::Vector<::flatbuffers::Offset> *mutable_test_vector_of_union() { return GetPointer<::flatbuffers::Vector<::flatbuffers::Offset> *>(VT_TEST_VECTOR_OF_UNION); } - bool Verify(::flatbuffers::Verifier &verifier) const { + template + bool Verify(::flatbuffers::VerifierTemplate &verifier) const { return VerifyTableStart(verifier) && VerifyField(verifier, VT_TEST_UNION_TYPE, 1) && VerifyOffset(verifier, VT_TEST_UNION) && @@ -676,7 +682,8 @@ inline ::flatbuffers::Offset D::Pack(::flatbuffers::FlatBufferBuilder &_fbb, _test_vector_of_union); } -inline bool VerifyABC(::flatbuffers::Verifier &verifier, const void *obj, ABC type) { +template +inline bool VerifyABC(::flatbuffers::VerifierTemplate &verifier, const void *obj, ABC type) { switch (type) { case ABC::NONE: { return true; @@ -697,7 +704,8 @@ inline bool VerifyABC(::flatbuffers::Verifier &verifier, const void *obj, ABC ty } } -inline bool VerifyABCVector(::flatbuffers::Verifier &verifier, const ::flatbuffers::Vector<::flatbuffers::Offset> *values, const ::flatbuffers::Vector *types) { +template +inline bool VerifyABCVector(::flatbuffers::VerifierTemplate &verifier, const ::flatbuffers::Vector<::flatbuffers::Offset> *values, const ::flatbuffers::Vector *types) { if (!values || !types) return !values && !types; if (values->size() != types->size()) return false; for (::flatbuffers::uoffset_t i = 0; i < values->size(); ++i) { diff --git a/tests/union_vector/union_vector_generated.h b/tests/union_vector/union_vector_generated.h index 5662f275b12..1117efd80e8 100644 --- a/tests/union_vector/union_vector_generated.h +++ b/tests/union_vector/union_vector_generated.h @@ -212,8 +212,10 @@ inline bool operator!=(const CharacterUnion &lhs, const CharacterUnion &rhs) { return !(lhs == rhs); } -bool VerifyCharacter(::flatbuffers::Verifier &verifier, const void *obj, Character type); -bool VerifyCharacterVector(::flatbuffers::Verifier &verifier, const ::flatbuffers::Vector<::flatbuffers::Offset> *values, const ::flatbuffers::Vector *types); +template +bool VerifyCharacter(::flatbuffers::VerifierTemplate &verifier, const void *obj, Character type); +template +bool VerifyCharacterVector(::flatbuffers::VerifierTemplate &verifier, const ::flatbuffers::Vector<::flatbuffers::Offset> *values, const ::flatbuffers::Vector *types); enum Gadget : uint8_t { Gadget_NONE = 0, @@ -345,8 +347,10 @@ inline bool operator!=(const GadgetUnion &lhs, const GadgetUnion &rhs) { return !(lhs == rhs); } -bool VerifyGadget(::flatbuffers::Verifier &verifier, const void *obj, Gadget type); -bool VerifyGadgetVector(::flatbuffers::Verifier &verifier, const ::flatbuffers::Vector<::flatbuffers::Offset> *values, const ::flatbuffers::Vector *types); +template +bool VerifyGadget(::flatbuffers::VerifierTemplate &verifier, const void *obj, Gadget type); +template +bool VerifyGadgetVector(::flatbuffers::VerifierTemplate &verifier, const ::flatbuffers::Vector<::flatbuffers::Offset> *values, const ::flatbuffers::Vector *types); FLATBUFFERS_MANUALLY_ALIGNED_STRUCT(4) Rapunzel FLATBUFFERS_FINAL_CLASS { private: @@ -467,7 +471,8 @@ struct Attacker FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table { bool mutate_sword_attack_damage(int32_t _sword_attack_damage = 0) { return SetField(VT_SWORD_ATTACK_DAMAGE, _sword_attack_damage, 0); } - bool Verify(::flatbuffers::Verifier &verifier) const { + template + bool Verify(::flatbuffers::VerifierTemplate &verifier) const { return VerifyTableStart(verifier) && VerifyField(verifier, VT_SWORD_ATTACK_DAMAGE, 4) && verifier.EndTable(); @@ -525,7 +530,8 @@ struct HandFan FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table { bool mutate_length(int32_t _length = 0) { return SetField(VT_LENGTH, _length, 0); } - bool Verify(::flatbuffers::Verifier &verifier) const { + template + bool Verify(::flatbuffers::VerifierTemplate &verifier) const { return VerifyTableStart(verifier) && VerifyField(verifier, VT_LENGTH, 4) && verifier.EndTable(); @@ -620,7 +626,8 @@ struct Movie FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table { ::flatbuffers::Vector<::flatbuffers::Offset> *mutable_characters() { return GetPointer<::flatbuffers::Vector<::flatbuffers::Offset> *>(VT_CHARACTERS); } - bool Verify(::flatbuffers::Verifier &verifier) const { + template + bool Verify(::flatbuffers::VerifierTemplate &verifier) const { return VerifyTableStart(verifier) && VerifyField(verifier, VT_MAIN_CHARACTER_TYPE, 1) && VerifyOffset(verifier, VT_MAIN_CHARACTER) && @@ -817,7 +824,8 @@ inline ::flatbuffers::Offset Movie::Pack(::flatbuffers::FlatBufferBuilder _characters); } -inline bool VerifyCharacter(::flatbuffers::Verifier &verifier, const void *obj, Character type) { +template +inline bool VerifyCharacter(::flatbuffers::VerifierTemplate &verifier, const void *obj, Character type) { switch (type) { case Character_NONE: { return true; @@ -827,13 +835,13 @@ inline bool VerifyCharacter(::flatbuffers::Verifier &verifier, const void *obj, return verifier.VerifyTable(ptr); } case Character_Rapunzel: { - return verifier.VerifyField(static_cast(obj), 0, 4); + return verifier.template VerifyField(static_cast(obj), 0, 4); } case Character_Belle: { - return verifier.VerifyField(static_cast(obj), 0, 4); + return verifier.template VerifyField(static_cast(obj), 0, 4); } case Character_BookFan: { - return verifier.VerifyField(static_cast(obj), 0, 4); + return verifier.template VerifyField(static_cast(obj), 0, 4); } case Character_Other: { auto ptr = reinterpret_cast(obj); @@ -847,7 +855,8 @@ inline bool VerifyCharacter(::flatbuffers::Verifier &verifier, const void *obj, } } -inline bool VerifyCharacterVector(::flatbuffers::Verifier &verifier, const ::flatbuffers::Vector<::flatbuffers::Offset> *values, const ::flatbuffers::Vector *types) { +template +inline bool VerifyCharacterVector(::flatbuffers::VerifierTemplate &verifier, const ::flatbuffers::Vector<::flatbuffers::Offset> *values, const ::flatbuffers::Vector *types) { if (!values || !types) return !values && !types; if (values->size() != types->size()) return false; for (::flatbuffers::uoffset_t i = 0; i < values->size(); ++i) { @@ -990,13 +999,14 @@ inline void CharacterUnion::Reset() { type = Character_NONE; } -inline bool VerifyGadget(::flatbuffers::Verifier &verifier, const void *obj, Gadget type) { +template +inline bool VerifyGadget(::flatbuffers::VerifierTemplate &verifier, const void *obj, Gadget type) { switch (type) { case Gadget_NONE: { return true; } case Gadget_FallingTub: { - return verifier.VerifyField(static_cast(obj), 0, 4); + return verifier.template VerifyField(static_cast(obj), 0, 4); } case Gadget_HandFan: { auto ptr = reinterpret_cast(obj); @@ -1006,7 +1016,8 @@ inline bool VerifyGadget(::flatbuffers::Verifier &verifier, const void *obj, Gad } } -inline bool VerifyGadgetVector(::flatbuffers::Verifier &verifier, const ::flatbuffers::Vector<::flatbuffers::Offset> *values, const ::flatbuffers::Vector *types) { +template +inline bool VerifyGadgetVector(::flatbuffers::VerifierTemplate &verifier, const ::flatbuffers::Vector<::flatbuffers::Offset> *values, const ::flatbuffers::Vector *types) { if (!values || !types) return !values && !types; if (values->size() != types->size()) return false; for (::flatbuffers::uoffset_t i = 0; i < values->size(); ++i) { @@ -1252,14 +1263,16 @@ inline bool SizePrefixedMovieBufferHasIdentifier(const void *buf) { buf, MovieIdentifier(), true); } +template inline bool VerifyMovieBuffer( - ::flatbuffers::Verifier &verifier) { - return verifier.VerifyBuffer(MovieIdentifier()); + ::flatbuffers::VerifierTemplate &verifier) { + return verifier.template VerifyBuffer(MovieIdentifier()); } +template inline bool VerifySizePrefixedMovieBuffer( - ::flatbuffers::Verifier &verifier) { - return verifier.VerifySizePrefixedBuffer(MovieIdentifier()); + ::flatbuffers::VerifierTemplate &verifier) { + return verifier.template VerifySizePrefixedBuffer(MovieIdentifier()); } inline void FinishMovieBuffer(