@@ -681,16 +681,30 @@ class CppGenerator : public BaseGenerator {
681681 code_.SetValue (" ID" , " nullptr" );
682682 }
683683
684+ <<<<<<< HEAD
684685 code_ += " template <bool B = false>" ;
685686 code_ += " inline bool Verify{{STRUCT_NAME}}Buffer(" ;
686687 code_ += " ::flatbuffers::VerifierTemplate<B> &verifier) {" ;
688+ =======
689+ code_ += " template <bool TrackBufferSize>" ;
690+ code_ += " inline bool Verify{{STRUCT_NAME}}Buffer(" ;
691+ code_ +=
692+ " ::flatbuffers::VerifierTemplate<TrackBufferSize> &verifier) {" ;
693+ >>>>>>> 0af519ec (Fixes to make SizeVerifier work.)
687694 code_ += " return verifier.template VerifyBuffer<{{CPP_NAME}}>({{ID}});" ;
688695 code_ += " }" ;
689696 code_ += " " ;
690697
698+ <<<<<<< HEAD
691699 code_ += " template <bool B = false>" ;
692700 code_ += " inline bool VerifySizePrefixed{{STRUCT_NAME}}Buffer(" ;
693701 code_ += " ::flatbuffers::VerifierTemplate<B> &verifier) {" ;
702+ =======
703+ code_ += " template <bool TrackBufferSize>" ;
704+ code_ += " inline bool VerifySizePrefixed{{STRUCT_NAME}}Buffer(" ;
705+ code_ +=
706+ " ::flatbuffers::VerifierTemplate<TrackBufferSize> &verifier) {" ;
707+ >>>>>>> 0af519ec (Fixes to make SizeVerifier work.)
694708 code_ +=
695709 " return "
696710 " verifier.template "
@@ -1105,6 +1119,7 @@ class CppGenerator : public BaseGenerator {
11051119 }
11061120 }
11071121
1122+ <<<<<<< HEAD
11081123 // For the initial declaration, we specify the template parameters,
11091124 // including template default arguments.
11101125 std::string UnionVerifyTemplateDecl () { return " template <bool B = false>" ; }
@@ -1123,13 +1138,31 @@ class CppGenerator : public BaseGenerator {
11231138
11241139 // Should be used in conjunction with
11251140 // UnionVerifyTemplateDecl()/UnionVerifyTemplateDef().
1141+ =======
1142+ std::string UnionVerifyTemplate () {
1143+ return " template <bool TrackBufferSize>" ;
1144+ }
1145+
1146+ // Should be used in conjunction with UnionVerifyTemplate().
1147+ std::string UnionVerifySignature (const EnumDef& enum_def) {
1148+ return " bool Verify" + Name (enum_def) +
1149+ " (::flatbuffers::VerifierTemplate<TrackBufferSize> &verifier, " +
1150+ " const void *obj, " + Name (enum_def) + " type)" ;
1151+ }
1152+
1153+ // Should be used in conjunction with UnionVerifyTemplate().
1154+ >>>>>>> 0af519ec (Fixes to make SizeVerifier work.)
11261155 std::string UnionVectorVerifySignature (const EnumDef& enum_def) {
11271156 const std::string name = Name (enum_def);
11281157 const std::string& type =
11291158 opts_.scoped_enums ? name
11301159 : GenTypeBasic (enum_def.underlying_type , false );
11311160 return " bool Verify" + name + " Vector" +
1161+ <<<<<<< HEAD
11321162 " (::flatbuffers::VerifierTemplate<B> &verifier, " +
1163+ =======
1164+ " (::flatbuffers::VerifierTemplate<TrackBufferSize> &verifier, " +
1165+ >>>>>>> 0af519ec (Fixes to make SizeVerifier work.)
11331166 " const ::flatbuffers::Vector<::flatbuffers::Offset<void>> "
11341167 " *values, " +
11351168 " const ::flatbuffers::Vector<" + type + " > *types)" ;
@@ -1424,9 +1457,15 @@ class CppGenerator : public BaseGenerator {
14241457 GenEnumObjectBasedAPI (enum_def);
14251458
14261459 if (enum_def.is_union ) {
1460+ <<<<<<< HEAD
14271461 code_ += UnionVerifyTemplateDecl ();
14281462 code_ += UnionVerifySignature (enum_def) + " ;" ;
14291463 code_ += UnionVerifyTemplateDecl ();
1464+ =======
1465+ code_ += UnionVerifyTemplate ();
1466+ code_ += UnionVerifySignature (enum_def) + " ;" ;
1467+ code_ += UnionVerifyTemplate ();
1468+ >>>>>>> 0af519ec (Fixes to make SizeVerifier work.)
14301469 code_ += UnionVectorVerifySignature (enum_def) + " ;" ;
14311470 code_ += " " ;
14321471 }
@@ -1655,7 +1694,11 @@ class CppGenerator : public BaseGenerator {
16551694 // on the wrong type.
16561695 code_.SetValue (" ENUM_NAME" , Name (enum_def));
16571696
1697+ <<<<<<< HEAD
16581698 code_ += UnionVerifyTemplateDef ();
1699+ =======
1700+ code_ += UnionVerifyTemplate ();
1701+ >>>>>>> 0af519ec (Fixes to make SizeVerifier work.)
16591702 code_ += " inline " + UnionVerifySignature (enum_def) + " {" ;
16601703 code_ += " switch (type) {" ;
16611704 for (auto it = enum_def.Vals ().begin (); it != enum_def.Vals ().end (); ++it) {
@@ -1696,7 +1739,11 @@ class CppGenerator : public BaseGenerator {
16961739 code_ += " }" ;
16971740 code_ += " " ;
16981741
1742+ <<<<<<< HEAD
16991743 code_ += UnionVerifyTemplateDef ();
1744+ =======
1745+ code_ += UnionVerifyTemplate ();
1746+ >>>>>>> 0af519ec (Fixes to make SizeVerifier work.)
17001747 code_ += " inline " + UnionVectorVerifySignature (enum_def) + " {" ;
17011748 code_ += " if (!values || !types) return !values && !types;" ;
17021749 code_ += " if (values->size() != types->size()) return false;" ;
@@ -3020,9 +3067,15 @@ class CppGenerator : public BaseGenerator {
30203067
30213068 // Generate a verifier function that can check a buffer from an untrusted
30223069 // source will never cause reads outside the buffer.
3070+ <<<<<<< HEAD
30233071 code_ += " template <bool B = false>" ;
30243072 code_ +=
30253073 " bool Verify(::flatbuffers::VerifierTemplate<B> "
3074+ =======
3075+ code_ += " template <bool TrackBufferSize>" ;
3076+ code_ +=
3077+ " bool Verify(::flatbuffers::VerifierTemplate<TrackBufferSize> "
3078+ >>>>>>> 0af519ec (Fixes to make SizeVerifier work.)
30263079 " &verifier) const {" ;
30273080 code_ += " return VerifyTableStart(verifier)\\ " ;
30283081 for (const auto & field : struct_def.fields .vec ) {
0 commit comments