Add two codegen parameters to nano.
enum_style = c | java: 'c' to put the enum member int constants at the parent scope; 'java' to create uninstantiatable shell classes at the parent scope and put the int constants inside. optional_field_style = default | accessors: 'default' to create one public mutable field per optional proto field; 'accessors' to encapsulate the generated fields behind get, set, has and clear accessors. This CL only contains parsing code for these two parameters. Change-Id: Iec0c3b0f30af8eb7db328e790664306bc90be089
This commit is contained in:
parent
e43344398f
commit
71766127eb
@ -119,12 +119,23 @@ bool JavaNanoGenerator::Generate(const FileDescriptor* file,
|
|||||||
} else if (options[i].first == "java_multiple_files") {
|
} else if (options[i].first == "java_multiple_files") {
|
||||||
params.set_override_java_multiple_files(options[i].second == "true");
|
params.set_override_java_multiple_files(options[i].second == "true");
|
||||||
} else if (options[i].first == "java_nano_generate_has") {
|
} else if (options[i].first == "java_nano_generate_has") {
|
||||||
params.set_generate_has(options[i].second == "true");
|
params.set_generate_has(options[i].second == "true");
|
||||||
|
} else if (options[i].first == "enum_style") {
|
||||||
|
params.set_java_enum_style(options[i].second == "java");
|
||||||
|
} else if (options[i].first == "optional_field_style") {
|
||||||
|
params.set_optional_field_accessors(options[i].second == "accessors");
|
||||||
} else {
|
} else {
|
||||||
*error = "Ignore unknown javanano generator option: " + options[i].first;
|
*error = "Ignore unknown javanano generator option: " + options[i].first;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Check illegal parameter combinations
|
||||||
|
if (params.generate_has() && params.optional_field_accessors()) {
|
||||||
|
error->assign("java_nano_generate_has=true cannot be used in conjunction"
|
||||||
|
" with optional_field_style=accessors");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
// -----------------------------------------------------------------
|
// -----------------------------------------------------------------
|
||||||
|
|
||||||
FileGenerator file_generator(file, params);
|
FileGenerator file_generator(file, params);
|
||||||
|
@ -58,6 +58,8 @@ class Params {
|
|||||||
NameMap java_outer_classnames_;
|
NameMap java_outer_classnames_;
|
||||||
NameSet java_multiple_files_;
|
NameSet java_multiple_files_;
|
||||||
bool generate_has_;
|
bool generate_has_;
|
||||||
|
bool java_enum_style_;
|
||||||
|
bool optional_field_accessors_;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
Params(const string & base_name) :
|
Params(const string & base_name) :
|
||||||
@ -65,7 +67,9 @@ class Params {
|
|||||||
base_name_(base_name),
|
base_name_(base_name),
|
||||||
override_java_multiple_files_(JAVANANO_MUL_UNSET),
|
override_java_multiple_files_(JAVANANO_MUL_UNSET),
|
||||||
store_unknown_fields_(false),
|
store_unknown_fields_(false),
|
||||||
generate_has_(false) {
|
generate_has_(false),
|
||||||
|
java_enum_style_(false),
|
||||||
|
optional_field_accessors_(false) {
|
||||||
}
|
}
|
||||||
|
|
||||||
const string& base_name() const {
|
const string& base_name() const {
|
||||||
@ -160,6 +164,19 @@ class Params {
|
|||||||
return generate_has_;
|
return generate_has_;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void set_java_enum_style(bool value) {
|
||||||
|
java_enum_style_ = value;
|
||||||
|
}
|
||||||
|
bool java_enum_style() const {
|
||||||
|
return java_enum_style_;
|
||||||
|
}
|
||||||
|
|
||||||
|
void set_optional_field_accessors(bool value) {
|
||||||
|
optional_field_accessors_ = value;
|
||||||
|
}
|
||||||
|
bool optional_field_accessors() const {
|
||||||
|
return optional_field_accessors_;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace javanano
|
} // namespace javanano
|
||||||
|
Loading…
Reference in New Issue
Block a user