diff options
Diffstat (limited to 'src')
3 files changed, 20 insertions, 2 deletions
diff --git a/src/google/protobuf/compiler/javanano/javanano_generator.cc b/src/google/protobuf/compiler/javanano/javanano_generator.cc index 0e121033..61ef2caa 100644 --- a/src/google/protobuf/compiler/javanano/javanano_generator.cc +++ b/src/google/protobuf/compiler/javanano/javanano_generator.cc @@ -144,6 +144,8 @@ bool JavaNanoGenerator::Generate(const FileDescriptor* file, params.set_generate_equals(option_value == "true"); } else if (option_name == "ignore_services") { params.set_ignore_services(option_value == "true"); + } else if (option_name == "parcelable_messages") { + params.set_parcelable_messages(option_value == "true"); } else { *error = "Ignore unknown javanano generator option: " + option_name; } diff --git a/src/google/protobuf/compiler/javanano/javanano_message.cc b/src/google/protobuf/compiler/javanano/javanano_message.cc index 3a1b5a50..0cf9f971 100644 --- a/src/google/protobuf/compiler/javanano/javanano_message.cc +++ b/src/google/protobuf/compiler/javanano/javanano_message.cc @@ -132,10 +132,17 @@ void MessageGenerator::Generate(io::Printer* printer) { "public static final class $classname$ extends\n", "classname", descriptor_->name()); } - if (params_.store_unknown_fields()) { + if (params_.store_unknown_fields() && params_.parcelable_messages()) { + printer->Print( + " com.google.protobuf.nano.android.ParcelableExtendableMessageNano<$classname$> {\n", + "classname", descriptor_->name()); + } else if (params_.store_unknown_fields()) { printer->Print( " com.google.protobuf.nano.ExtendableMessageNano<$classname$> {\n", "classname", descriptor_->name()); + } else if (params_.parcelable_messages()) { + printer->Print( + " com.google.protobuf.nano.android.ParcelableMessageNano {\n"); } else { printer->Print( " com.google.protobuf.nano.MessageNano {\n"); diff --git a/src/google/protobuf/compiler/javanano/javanano_params.h b/src/google/protobuf/compiler/javanano/javanano_params.h index 889395e3..d0626a2c 100644 --- a/src/google/protobuf/compiler/javanano/javanano_params.h +++ b/src/google/protobuf/compiler/javanano/javanano_params.h @@ -63,6 +63,7 @@ class Params { bool use_reference_types_for_primitives_; bool generate_equals_; bool ignore_services_; + bool parcelable_messages_; public: Params(const string & base_name) : @@ -75,7 +76,8 @@ class Params { optional_field_accessors_(false), use_reference_types_for_primitives_(false), generate_equals_(false), - ignore_services_(false) { + ignore_services_(false), + parcelable_messages_(false) { } const string& base_name() const { @@ -204,6 +206,13 @@ class Params { bool ignore_services() const { return ignore_services_; } + + void set_parcelable_messages(bool value) { + parcelable_messages_ = value; + } + bool parcelable_messages() const { + return parcelable_messages_; + } }; } // namespace javanano |