Added backwards compatible --no-union-value-namespacing

Change-Id: Ia78dd3b0f213e9ffa49dcec699dcbb21fe6517da
Tested: on Linux.
parent c9b9fd04
...@@ -347,6 +347,7 @@ struct IDLOptions { ...@@ -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 { ...@@ -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[]) { ...@@ -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) { ...@@ -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()
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment