From 19920db39f3a4e2edbc00d92c788b6614cc4cb67 Mon Sep 17 00:00:00 2001 From: Justin T Conroy Date: Fri, 28 Jan 2022 22:52:32 -0600 Subject: [PATCH] Include a SizePrefixed..HasIdentifier for c++. (#6871) * Include a SizePrefixed..HasIdentifier for c++. * Add updated generated code. --- include/flatbuffers/reflection_generated.h | 5 +++++ src/idl_gen_cpp.cpp | 8 ++++++++ tests/arrays_test_generated.h | 5 +++++ tests/cpp17/generated_cpp17/monster_test_generated.h | 5 +++++ tests/cpp17/generated_cpp17/optional_scalars_generated.h | 5 +++++ tests/cpp17/generated_cpp17/union_vector_generated.h | 5 +++++ tests/monster_extra_generated.h | 5 +++++ tests/monster_test_generated.h | 5 +++++ tests/optional_scalars_generated.h | 5 +++++ tests/union_vector/union_vector_generated.h | 5 +++++ 10 files changed, 53 insertions(+) diff --git a/include/flatbuffers/reflection_generated.h b/include/flatbuffers/reflection_generated.h index cd5cbc2..dcb0f7e 100644 --- a/include/flatbuffers/reflection_generated.h +++ b/include/flatbuffers/reflection_generated.h @@ -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(SchemaIdentifier()); diff --git a/src/idl_gen_cpp.cpp b/src/idl_gen_cpp.cpp index e4ebff2..a14ac77 100644 --- a/src/idl_gen_cpp.cpp +++ b/src/idl_gen_cpp.cpp @@ -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. diff --git a/tests/arrays_test_generated.h b/tests/arrays_test_generated.h index d568070..007a5f5 100644 --- a/tests/arrays_test_generated.h +++ b/tests/arrays_test_generated.h @@ -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(ArrayTableIdentifier()); diff --git a/tests/cpp17/generated_cpp17/monster_test_generated.h b/tests/cpp17/generated_cpp17/monster_test_generated.h index 1a6f569..ad09dac 100644 --- a/tests/cpp17/generated_cpp17/monster_test_generated.h +++ b/tests/cpp17/generated_cpp17/monster_test_generated.h @@ -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(MonsterIdentifier()); diff --git a/tests/cpp17/generated_cpp17/optional_scalars_generated.h b/tests/cpp17/generated_cpp17/optional_scalars_generated.h index 7395077..24b5ccd 100644 --- a/tests/cpp17/generated_cpp17/optional_scalars_generated.h +++ b/tests/cpp17/generated_cpp17/optional_scalars_generated.h @@ -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(ScalarStuffIdentifier()); diff --git a/tests/cpp17/generated_cpp17/union_vector_generated.h b/tests/cpp17/generated_cpp17/union_vector_generated.h index a617913..aa0daf8 100644 --- a/tests/cpp17/generated_cpp17/union_vector_generated.h +++ b/tests/cpp17/generated_cpp17/union_vector_generated.h @@ -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(MovieIdentifier()); diff --git a/tests/monster_extra_generated.h b/tests/monster_extra_generated.h index 4cfe719..b27e092 100644 --- a/tests/monster_extra_generated.h +++ b/tests/monster_extra_generated.h @@ -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(MonsterExtraIdentifier()); diff --git a/tests/monster_test_generated.h b/tests/monster_test_generated.h index 1d96bae..cbcbf96 100644 --- a/tests/monster_test_generated.h +++ b/tests/monster_test_generated.h @@ -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(MonsterIdentifier()); diff --git a/tests/optional_scalars_generated.h b/tests/optional_scalars_generated.h index 724c0eb..c295eba 100644 --- a/tests/optional_scalars_generated.h +++ b/tests/optional_scalars_generated.h @@ -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(ScalarStuffIdentifier()); diff --git a/tests/union_vector/union_vector_generated.h b/tests/union_vector/union_vector_generated.h index 489ac94..e08df6a 100644 --- a/tests/union_vector/union_vector_generated.h +++ b/tests/union_vector/union_vector_generated.h @@ -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(MovieIdentifier()); -- 2.7.4