diff --git a/src/idl_gen_cpp.cpp b/src/idl_gen_cpp.cpp index aab572905..37d968e8a 100644 --- a/src/idl_gen_cpp.cpp +++ b/src/idl_gen_cpp.cpp @@ -717,6 +717,13 @@ std::string GenerateCPP(const Parser &parser, code += name + "Identifier()); }\n\n"; } + if (parser.file_extension_.length()) { + // Return the extension + code += "inline const char *" + name; + code += "Extension() { return \"" + parser.file_extension_; + code += "\"; }\n\n"; + } + // Finish a buffer with a given root object: code += "inline void Finish" + name; code += "Buffer(flatbuffers::FlatBufferBuilder &fbb, flatbuffers::Offset<"; diff --git a/tests/monster_test_generated.h b/tests/monster_test_generated.h index f729fa02a..5de3da024 100755 --- a/tests/monster_test_generated.h +++ b/tests/monster_test_generated.h @@ -332,6 +332,8 @@ inline const char *MonsterIdentifier() { return "MONS"; } inline bool MonsterBufferHasIdentifier(const void *buf) { return flatbuffers::BufferHasIdentifier(buf, MonsterIdentifier()); } +inline const char *MonsterExtension() { return "mon"; } + inline void FinishMonsterBuffer(flatbuffers::FlatBufferBuilder &fbb, flatbuffers::Offset root) { fbb.Finish(root, MonsterIdentifier()); } } // namespace Example diff --git a/tests/test.cpp b/tests/test.cpp index 766b3258d..b0cace944 100644 --- a/tests/test.cpp +++ b/tests/test.cpp @@ -135,6 +135,7 @@ void AccessFlatBufferTest(const uint8_t *flatbuf, size_t length) { TEST_EQ(strcmp(MonsterIdentifier(), "MONS"), 0); TEST_EQ(MonsterBufferHasIdentifier(flatbuf), true); + TEST_EQ(strcmp(MonsterExtension(), "mon"), 0); // Access the buffer from the root. auto monster = GetMonster(flatbuf);