Include a SizePrefixed..HasIdentifier for c++. (#6871)
authorJustin T Conroy <justintconroy@users.noreply.github.com>
Sat, 29 Jan 2022 04:52:32 +0000 (22:52 -0600)
committerGitHub <noreply@github.com>
Sat, 29 Jan 2022 04:52:32 +0000 (20:52 -0800)
* Include a SizePrefixed..HasIdentifier for c++.

* Add updated generated code.

include/flatbuffers/reflection_generated.h
src/idl_gen_cpp.cpp
tests/arrays_test_generated.h
tests/cpp17/generated_cpp17/monster_test_generated.h
tests/cpp17/generated_cpp17/optional_scalars_generated.h
tests/cpp17/generated_cpp17/union_vector_generated.h
tests/monster_extra_generated.h
tests/monster_test_generated.h
tests/optional_scalars_generated.h
tests/union_vector/union_vector_generated.h

index cd5cbc2..dcb0f7e 100644 (file)
@@ -1413,6 +1413,11 @@ inline bool SchemaBufferHasIdentifier(const void *buf) {
       buf, SchemaIdentifier());
 }
 
+inline bool SizePrefixedSchemaBufferHasIdentifier(const void *buf) {
+  return flatbuffers::BufferHasIdentifier(
+      buf, SchemaIdentifier(), true);
+}
+
 inline bool VerifySchemaBuffer(
     flatbuffers::Verifier &verifier) {
   return verifier.VerifyBuffer<reflection::Schema>(SchemaIdentifier());
index e4ebff2..a14ac77 100644 (file)
@@ -535,6 +535,14 @@ class CppGenerator : public BaseGenerator {
         code_ += "      buf, {{STRUCT_NAME}}Identifier());";
         code_ += "}";
         code_ += "";
+
+        // Check if a size-prefixed buffer has the identifier.
+        code_ += "inline \\";
+        code_ += "bool SizePrefixed{{STRUCT_NAME}}BufferHasIdentifier(const void *buf) {";
+        code_ += "  return flatbuffers::BufferHasIdentifier(";
+        code_ += "      buf, {{STRUCT_NAME}}Identifier(), true);";
+        code_ += "}";
+        code_ += "";
       }
 
       // The root verifier.
index d568070..007a5f5 100644 (file)
@@ -470,6 +470,11 @@ inline bool ArrayTableBufferHasIdentifier(const void *buf) {
       buf, ArrayTableIdentifier());
 }
 
+inline bool SizePrefixedArrayTableBufferHasIdentifier(const void *buf) {
+  return flatbuffers::BufferHasIdentifier(
+      buf, ArrayTableIdentifier(), true);
+}
+
 inline bool VerifyArrayTableBuffer(
     flatbuffers::Verifier &verifier) {
   return verifier.VerifyBuffer<MyGame::Example::ArrayTable>(ArrayTableIdentifier());
index 1a6f569..ad09dac 100644 (file)
@@ -3727,6 +3727,11 @@ inline bool MonsterBufferHasIdentifier(const void *buf) {
       buf, MonsterIdentifier());
 }
 
+inline bool SizePrefixedMonsterBufferHasIdentifier(const void *buf) {
+  return flatbuffers::BufferHasIdentifier(
+      buf, MonsterIdentifier(), true);
+}
+
 inline bool VerifyMonsterBuffer(
     flatbuffers::Verifier &verifier) {
   return verifier.VerifyBuffer<MyGame::Example::Monster>(MonsterIdentifier());
index 7395077..24b5ccd 100644 (file)
@@ -946,6 +946,11 @@ inline bool ScalarStuffBufferHasIdentifier(const void *buf) {
       buf, ScalarStuffIdentifier());
 }
 
+inline bool SizePrefixedScalarStuffBufferHasIdentifier(const void *buf) {
+  return flatbuffers::BufferHasIdentifier(
+      buf, ScalarStuffIdentifier(), true);
+}
+
 inline bool VerifyScalarStuffBuffer(
     flatbuffers::Verifier &verifier) {
   return verifier.VerifyBuffer<optional_scalars::ScalarStuff>(ScalarStuffIdentifier());
index a617913..aa0daf8 100644 (file)
@@ -1214,6 +1214,11 @@ inline bool MovieBufferHasIdentifier(const void *buf) {
       buf, MovieIdentifier());
 }
 
+inline bool SizePrefixedMovieBufferHasIdentifier(const void *buf) {
+  return flatbuffers::BufferHasIdentifier(
+      buf, MovieIdentifier(), true);
+}
+
 inline bool VerifyMovieBuffer(
     flatbuffers::Verifier &verifier) {
   return verifier.VerifyBuffer<Movie>(MovieIdentifier());
index 4cfe719..b27e092 100644 (file)
@@ -362,6 +362,11 @@ inline bool MonsterExtraBufferHasIdentifier(const void *buf) {
       buf, MonsterExtraIdentifier());
 }
 
+inline bool SizePrefixedMonsterExtraBufferHasIdentifier(const void *buf) {
+  return flatbuffers::BufferHasIdentifier(
+      buf, MonsterExtraIdentifier(), true);
+}
+
 inline bool VerifyMonsterExtraBuffer(
     flatbuffers::Verifier &verifier) {
   return verifier.VerifyBuffer<MyGame::MonsterExtra>(MonsterExtraIdentifier());
index 1d96bae..cbcbf96 100644 (file)
@@ -3698,6 +3698,11 @@ inline bool MonsterBufferHasIdentifier(const void *buf) {
       buf, MonsterIdentifier());
 }
 
+inline bool SizePrefixedMonsterBufferHasIdentifier(const void *buf) {
+  return flatbuffers::BufferHasIdentifier(
+      buf, MonsterIdentifier(), true);
+}
+
 inline bool VerifyMonsterBuffer(
     flatbuffers::Verifier &verifier) {
   return verifier.VerifyBuffer<MyGame::Example::Monster>(MonsterIdentifier());
index 724c0eb..c295eba 100644 (file)
@@ -906,6 +906,11 @@ inline bool ScalarStuffBufferHasIdentifier(const void *buf) {
       buf, ScalarStuffIdentifier());
 }
 
+inline bool SizePrefixedScalarStuffBufferHasIdentifier(const void *buf) {
+  return flatbuffers::BufferHasIdentifier(
+      buf, ScalarStuffIdentifier(), true);
+}
+
 inline bool VerifyScalarStuffBuffer(
     flatbuffers::Verifier &verifier) {
   return verifier.VerifyBuffer<optional_scalars::ScalarStuff>(ScalarStuffIdentifier());
index 489ac94..e08df6a 100644 (file)
@@ -1267,6 +1267,11 @@ inline bool MovieBufferHasIdentifier(const void *buf) {
       buf, MovieIdentifier());
 }
 
+inline bool SizePrefixedMovieBufferHasIdentifier(const void *buf) {
+  return flatbuffers::BufferHasIdentifier(
+      buf, MovieIdentifier(), true);
+}
+
 inline bool VerifyMovieBuffer(
     flatbuffers::Verifier &verifier) {
   return verifier.VerifyBuffer<Movie>(MovieIdentifier());