Merge "Adds a primitive enum mode for reftypes."
This commit is contained in:
commit
517591b8ea
@ -59,6 +59,7 @@ void SetEnumVariables(const Params& params,
|
||||
RenameJavaKeywords(UnderscoresToCapitalizedCamelCase(descriptor));
|
||||
(*variables)["number"] = SimpleItoa(descriptor->number());
|
||||
if (params.use_reference_types_for_primitives()
|
||||
&& !params.reftypes_primitive_enums()
|
||||
&& !descriptor->is_repeated()) {
|
||||
(*variables)["type"] = "java.lang.Integer";
|
||||
(*variables)["default"] = "null";
|
||||
@ -197,7 +198,8 @@ GenerateSerializedSizeCode(io::Printer* printer) const {
|
||||
}
|
||||
|
||||
void EnumFieldGenerator::GenerateEqualsCode(io::Printer* printer) const {
|
||||
if (params_.use_reference_types_for_primitives()) {
|
||||
if (params_.use_reference_types_for_primitives()
|
||||
&& !params_.reftypes_primitive_enums()) {
|
||||
printer->Print(variables_,
|
||||
"if (this.$name$ == null) {\n"
|
||||
" if (other.$name$ != null) {\n"
|
||||
@ -228,7 +230,8 @@ void EnumFieldGenerator::GenerateEqualsCode(io::Printer* printer) const {
|
||||
void EnumFieldGenerator::GenerateHashCodeCode(io::Printer* printer) const {
|
||||
printer->Print(
|
||||
"result = 31 * result + ");
|
||||
if (params_.use_reference_types_for_primitives()) {
|
||||
if (params_.use_reference_types_for_primitives()
|
||||
&& !params_.reftypes_primitive_enums()) {
|
||||
printer->Print(variables_,
|
||||
"(this.$name$ == null ? 0 : this.$name$)");
|
||||
} else {
|
||||
|
@ -139,7 +139,10 @@ bool JavaNanoGenerator::Generate(const FileDescriptor* file,
|
||||
params.set_java_enum_style(option_value == "java");
|
||||
} else if (option_name == "optional_field_style") {
|
||||
params.set_optional_field_accessors(option_value == "accessors");
|
||||
params.set_use_reference_types_for_primitives(option_value == "reftypes");
|
||||
params.set_use_reference_types_for_primitives(option_value == "reftypes"
|
||||
|| option_value == "reftypes_primitive_enums");
|
||||
params.set_reftypes_primitive_enums(
|
||||
option_value == "reftypes_primitive_enums");
|
||||
} else if (option_name == "generate_equals") {
|
||||
params.set_generate_equals(option_value == "true");
|
||||
} else if (option_name == "ignore_services") {
|
||||
|
@ -392,6 +392,10 @@ string DefaultValue(const Params& params, const FieldDescriptor* field) {
|
||||
}
|
||||
|
||||
if (params.use_reference_types_for_primitives()) {
|
||||
if (params.reftypes_primitive_enums()
|
||||
&& field->cpp_type() == FieldDescriptor::CPPTYPE_ENUM) {
|
||||
return "Integer.MIN_VALUE";
|
||||
}
|
||||
return "null";
|
||||
}
|
||||
|
||||
|
@ -64,6 +64,7 @@ class Params {
|
||||
bool generate_equals_;
|
||||
bool ignore_services_;
|
||||
bool parcelable_messages_;
|
||||
bool reftypes_primitive_enums_;
|
||||
|
||||
public:
|
||||
Params(const string & base_name) :
|
||||
@ -77,7 +78,8 @@ class Params {
|
||||
use_reference_types_for_primitives_(false),
|
||||
generate_equals_(false),
|
||||
ignore_services_(false),
|
||||
parcelable_messages_(false) {
|
||||
parcelable_messages_(false),
|
||||
reftypes_primitive_enums_(false) {
|
||||
}
|
||||
|
||||
const string& base_name() const {
|
||||
@ -213,6 +215,13 @@ class Params {
|
||||
bool parcelable_messages() const {
|
||||
return parcelable_messages_;
|
||||
}
|
||||
|
||||
void set_reftypes_primitive_enums(bool value) {
|
||||
reftypes_primitive_enums_ = value;
|
||||
}
|
||||
bool reftypes_primitive_enums() const {
|
||||
return reftypes_primitive_enums_;
|
||||
}
|
||||
};
|
||||
|
||||
} // namespace javanano
|
||||
|
Loading…
Reference in New Issue
Block a user