Преглед на файлове

am 9be7e740: Merge "Change reftypes_primitive_enums to reftypes_compat_mode."

* commit '9be7e7401174d75e87e21fdc5f43549594a714bb':
  Change reftypes_primitive_enums to reftypes_compat_mode.
Brian Duff преди 11 години
родител
ревизия
4d6e9c5f6d

+ 5 - 2
src/google/protobuf/compiler/javanano/javanano_generator.cc

@@ -140,9 +140,12 @@ bool JavaNanoGenerator::Generate(const FileDescriptor* file,
     } 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"
-          || option_value == "reftypes_primitive_enums");
+          || option_value == "reftypes_compat_mode");
       params.set_reftypes_primitive_enums(
-          option_value == "reftypes_primitive_enums");
+          option_value == "reftypes_compat_mode");
+      if (option_value == "reftypes_compat_mode") {
+        params.set_generate_clear(false);
+      }
     } else if (option_name == "generate_equals") {
       params.set_generate_equals(option_value == "true");
     } else if (option_name == "ignore_services") {

+ 16 - 9
src/google/protobuf/compiler/javanano/javanano_message.cc

@@ -245,16 +245,20 @@ void MessageGenerator::Generate(io::Printer* printer) {
       "        _classInitialized = true;\n"
       "      }\n"
       "    }\n"
-      "  }\n"
-      "  clear();\n"
-      "}\n");
+      "  }\n");
+    if (params_.generate_clear()) {
+      printer->Print("  clear();\n");
+    }
+    printer->Print("}\n");
   } else {
-    printer->Print(
-      "\n"
-      "public $classname$() {\n"
-      "  clear();\n"
-      "}\n",
-      "classname", descriptor_->name());
+    if (params_.generate_clear()) {
+      printer->Print(
+        "\n"
+        "public $classname$() {\n"
+        "  clear();\n"
+        "}\n",
+        "classname", descriptor_->name());
+    }
   }
 
   // Other methods in this class
@@ -440,6 +444,9 @@ void MessageGenerator::GenerateSerializeOneField(
 }
 
 void MessageGenerator::GenerateClear(io::Printer* printer) {
+  if (!params_.generate_clear()) {
+    return;
+  }
   printer->Print(
     "\n"
     "public $classname$ clear() {\n",

+ 10 - 1
src/google/protobuf/compiler/javanano/javanano_params.h

@@ -65,6 +65,7 @@ class Params {
   bool ignore_services_;
   bool parcelable_messages_;
   bool reftypes_primitive_enums_;
+  bool generate_clear_;
 
  public:
   Params(const string & base_name) :
@@ -79,7 +80,8 @@ class Params {
     generate_equals_(false),
     ignore_services_(false),
     parcelable_messages_(false),
-    reftypes_primitive_enums_(false) {
+    reftypes_primitive_enums_(false),
+    generate_clear_(true) {
   }
 
   const string& base_name() const {
@@ -222,6 +224,13 @@ class Params {
   bool reftypes_primitive_enums() const {
     return reftypes_primitive_enums_;
   }
+
+  void set_generate_clear(bool value) {
+    generate_clear_ = value;
+  }
+  bool generate_clear() const {
+    return generate_clear_;
+  }
 };
 
 }  // namespace javanano