mirror of
https://github.com/google/flatbuffers.git
synced 2026-06-01 19:58:15 +00:00
Added backwards compatible --no-union-value-namespacing
Change-Id: Ia78dd3b0f213e9ffa49dcec699dcbb21fe6517da Tested: on Linux.
This commit is contained in:
@@ -347,6 +347,7 @@ struct IDLOptions {
|
|||||||
bool generate_name_strings;
|
bool generate_name_strings;
|
||||||
bool escape_proto_identifiers;
|
bool escape_proto_identifiers;
|
||||||
bool generate_object_based_api;
|
bool generate_object_based_api;
|
||||||
|
bool union_value_namespacing;
|
||||||
|
|
||||||
// Possible options for the more general generator below.
|
// Possible options for the more general generator below.
|
||||||
enum Language { kJava, kCSharp, kGo, kMAX };
|
enum Language { kJava, kCSharp, kGo, kMAX };
|
||||||
@@ -368,6 +369,7 @@ struct IDLOptions {
|
|||||||
generate_name_strings(false),
|
generate_name_strings(false),
|
||||||
escape_proto_identifiers(false),
|
escape_proto_identifiers(false),
|
||||||
generate_object_based_api(false),
|
generate_object_based_api(false),
|
||||||
|
union_value_namespacing(true),
|
||||||
lang(IDLOptions::kJava) {}
|
lang(IDLOptions::kJava) {}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -195,6 +195,8 @@ int main(int argc, const char *argv[]) {
|
|||||||
} else if(arg == "--scoped-enums") {
|
} else if(arg == "--scoped-enums") {
|
||||||
opts.prefixed_enums = false;
|
opts.prefixed_enums = false;
|
||||||
opts.scoped_enums = true;
|
opts.scoped_enums = true;
|
||||||
|
} else if (arg == "--no-union-value-namespacing") {
|
||||||
|
opts.union_value_namespacing = false;
|
||||||
} else if(arg == "--gen-mutable") {
|
} else if(arg == "--gen-mutable") {
|
||||||
opts.mutable_buffer = true;
|
opts.mutable_buffer = true;
|
||||||
} else if(arg == "--gen-name-strings") {
|
} else if(arg == "--gen-name-strings") {
|
||||||
|
|||||||
@@ -1216,10 +1216,12 @@ CheckedError Parser::ParseEnum(bool is_union, EnumDef **dest) {
|
|||||||
EXPECT(kTokenIdentifier);
|
EXPECT(kTokenIdentifier);
|
||||||
if (is_union) {
|
if (is_union) {
|
||||||
ECHECK(ParseNamespacing(&full_name, &value_name));
|
ECHECK(ParseNamespacing(&full_name, &value_name));
|
||||||
// Since we can't namespace the actual enum identifiers, turn
|
if (opts.union_value_namespacing) {
|
||||||
// namespace parts into part of the identifier.
|
// Since we can't namespace the actual enum identifiers, turn
|
||||||
value_name = full_name;
|
// namespace parts into part of the identifier.
|
||||||
std::replace(value_name.begin(), value_name.end(), '.', '_');
|
value_name = full_name;
|
||||||
|
std::replace(value_name.begin(), value_name.end(), '.', '_');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
auto prevsize = enum_def.vals.vec.size();
|
auto prevsize = enum_def.vals.vec.size();
|
||||||
auto value = enum_def.vals.vec.size()
|
auto value = enum_def.vals.vec.size()
|
||||||
|
|||||||
Reference in New Issue
Block a user