Non-alpha-numeric characters are filtered out of include guards

Since part of it is based on the filename, which may contain
characters that are not legal identifiers.

Change-Id: I62b8fe228a434a2040fd4ce47d220fc4d3398b41
Tested: on Linux.
This commit is contained in:
Wouter van Oortmerssen 2014-09-05 11:19:51 -07:00
parent f5e343efba
commit f57d012a21
2 changed files with 12 additions and 4 deletions

View File

@ -459,7 +459,7 @@ void CloseNestedNameSpaces(Namespace *ns, std::string *code_ptr) {
// Iterate through all definitions we haven't generate code for (enums, structs,
// and tables) and output them to a single file.
std::string GenerateCPP(const Parser &parser,
const std::string &include_guard_ident,
const std::string &file_name,
const GeneratorOptions &opts) {
using namespace cpp;
@ -522,8 +522,16 @@ std::string GenerateCPP(const Parser &parser,
" do not modify\n\n";
// Generate include guard.
std::string include_guard_ident = file_name;
// Remove any non-alpha-numeric characters that may appear in a filename.
include_guard_ident.erase(
std::remove_if(include_guard_ident.begin(),
include_guard_ident.end(),
[](char c) { return !isalnum(c); }),
include_guard_ident.end());
std::string include_guard = "FLATBUFFERS_GENERATED_" + include_guard_ident;
include_guard += "_";
// For further uniqueness, also add the namespace.
auto name_space = parser.namespaces_.back();
for (auto it = name_space->components.begin();
it != name_space->components.end(); ++it) {

View File

@ -1,7 +1,7 @@
// automatically generated by the FlatBuffers compiler, do not modify
#ifndef FLATBUFFERS_GENERATED_MONSTER_TEST_MYGAME_EXAMPLE_H_
#define FLATBUFFERS_GENERATED_MONSTER_TEST_MYGAME_EXAMPLE_H_
#ifndef FLATBUFFERS_GENERATED_MONSTERTEST_MYGAME_EXAMPLE_H_
#define FLATBUFFERS_GENERATED_MONSTERTEST_MYGAME_EXAMPLE_H_
#include "flatbuffers/flatbuffers.h"
@ -207,4 +207,4 @@ inline bool MonsterBufferHasIdentifier(const void *buf) { return flatbuffers::Bu
} // namespace Example
} // namespace MyGame
#endif // FLATBUFFERS_GENERATED_MONSTER_TEST_MYGAME_EXAMPLE_H_
#endif // FLATBUFFERS_GENERATED_MONSTERTEST_MYGAME_EXAMPLE_H_