Index: third_party/protobuf/src/google/protobuf/compiler/java/java_message_lite.cc |
diff --git a/third_party/protobuf/src/google/protobuf/compiler/java/java_message_lite.cc b/third_party/protobuf/src/google/protobuf/compiler/java/java_message_lite.cc |
index d4d2593a66b916ab65c9db4db61ade0a200ee72a..8cc0f01dcef0c0dcb993d63de3d50fcb64e671bc 100644 |
--- a/third_party/protobuf/src/google/protobuf/compiler/java/java_message_lite.cc |
+++ b/third_party/protobuf/src/google/protobuf/compiler/java/java_message_lite.cc |
@@ -120,23 +120,28 @@ int ImmutableMessageLiteGenerator::GenerateStaticVariableInitializers( |
// =================================================================== |
void ImmutableMessageLiteGenerator::GenerateInterface(io::Printer* printer) { |
+ MaybePrintGeneratedAnnotation(context_, printer, descriptor_, |
+ /* immutable = */ true, "OrBuilder"); |
if (descriptor_->extension_range_count() > 0) { |
printer->Print( |
- "public interface $classname$OrBuilder extends \n" |
- " $extra_interfaces$\n" |
- " com.google.protobuf.GeneratedMessageLite.\n" |
- " ExtendableMessageOrBuilder<\n" |
- " $classname$, $classname$.Builder> {\n", |
- "extra_interfaces", ExtraMessageOrBuilderInterfaces(descriptor_), |
- "classname", descriptor_->name()); |
+ "public interface $classname$OrBuilder$idend$ extends \n" |
+ " $extra_interfaces$\n" |
+ " com.google.protobuf.GeneratedMessageLite.\n" |
+ " ExtendableMessageOrBuilder<\n" |
+ " $classname$, $classname$.Builder> {\n", |
+ "extra_interfaces", ExtraMessageOrBuilderInterfaces(descriptor_), |
+ "classname", descriptor_->name(), |
+ "idend", ""); |
} else { |
printer->Print( |
- "public interface $classname$OrBuilder extends\n" |
- " $extra_interfaces$\n" |
- " com.google.protobuf.MessageLiteOrBuilder {\n", |
- "extra_interfaces", ExtraMessageOrBuilderInterfaces(descriptor_), |
- "classname", descriptor_->name()); |
+ "public interface $classname$OrBuilder$idend$ extends\n" |
+ " $extra_interfaces$\n" |
+ " com.google.protobuf.MessageLiteOrBuilder {\n", |
+ "extra_interfaces", ExtraMessageOrBuilderInterfaces(descriptor_), |
+ "classname", descriptor_->name(), |
+ "idend", ""); |
} |
+ printer->Annotate("classname", "idend", descriptor_); |
printer->Indent(); |
for (int i = 0; i < descriptor_->field_count(); i++) { |
@@ -163,16 +168,17 @@ void ImmutableMessageLiteGenerator::GenerateInterface(io::Printer* printer) { |
// =================================================================== |
void ImmutableMessageLiteGenerator::Generate(io::Printer* printer) { |
- bool is_own_file = |
- descriptor_->containing_type() == NULL && |
- MultipleJavaFiles(descriptor_->file(), /* immutable = */ true); |
+ bool is_own_file = IsOwnFile(descriptor_, /* immutable = */ true); |
- map<string, string> variables; |
+ std::map<string, string> variables; |
variables["static"] = is_own_file ? " " : " static "; |
variables["classname"] = descriptor_->name(); |
variables["extra_interfaces"] = ExtraMessageInterfaces(descriptor_); |
WriteMessageDocComment(printer, descriptor_); |
+ MaybePrintGeneratedAnnotation(context_, printer, descriptor_, |
+ /* immutable = */ true); |
+ |
// The builder_type stores the super type name of the nested Builder class. |
string builder_type; |
@@ -198,7 +204,6 @@ void ImmutableMessageLiteGenerator::Generate(io::Printer* printer) { |
} |
printer->Indent(); |
- |
GenerateConstructor(printer); |
// Nested types |
@@ -231,13 +236,13 @@ void ImmutableMessageLiteGenerator::Generate(io::Printer* printer) { |
} |
// oneof |
- map<string, string> vars; |
+ std::map<string, string> vars; |
for (int i = 0; i < descriptor_->oneof_decl_count(); i++) { |
- vars["oneof_name"] = context_->GetOneofGeneratorInfo( |
- descriptor_->oneof_decl(i))->name; |
+ const OneofDescriptor* oneof = descriptor_->oneof_decl(i); |
+ vars["oneof_name"] = context_->GetOneofGeneratorInfo(oneof)->name; |
vars["oneof_capitalized_name"] = context_->GetOneofGeneratorInfo( |
- descriptor_->oneof_decl(i))->capitalized_name; |
- vars["oneof_index"] = SimpleItoa(descriptor_->oneof_decl(i)->index()); |
+ oneof)->capitalized_name; |
+ vars["oneof_index"] = SimpleItoa(oneof->index()); |
// oneofCase_ and oneof_ |
printer->Print(vars, |
"private int $oneof_name$Case_ = 0;\n" |
@@ -247,8 +252,8 @@ void ImmutableMessageLiteGenerator::Generate(io::Printer* printer) { |
"public enum $oneof_capitalized_name$Case\n" |
" implements com.google.protobuf.Internal.EnumLite {\n"); |
printer->Indent(); |
- for (int j = 0; j < descriptor_->oneof_decl(i)->field_count(); j++) { |
- const FieldDescriptor* field = descriptor_->oneof_decl(i)->field(j); |
+ for (int j = 0; j < oneof->field_count(); j++) { |
+ const FieldDescriptor* field = oneof->field(j); |
printer->Print( |
"$field_name$($field_number$),\n", |
"field_name", |
@@ -276,8 +281,8 @@ void ImmutableMessageLiteGenerator::Generate(io::Printer* printer) { |
"\n" |
"public static $oneof_capitalized_name$Case forNumber(int value) {\n" |
" switch (value) {\n"); |
- for (int j = 0; j < descriptor_->oneof_decl(i)->field_count(); j++) { |
- const FieldDescriptor* field = descriptor_->oneof_decl(i)->field(j); |
+ for (int j = 0; j < oneof->field_count(); j++) { |
+ const FieldDescriptor* field = oneof->field(j); |
printer->Print( |
" case $field_number$: return $field_name$;\n", |
"field_number", |
@@ -462,7 +467,7 @@ GenerateMessageSerializationMethods(io::Printer* printer) { |
google::protobuf::scoped_array<const FieldDescriptor * > sorted_fields( |
SortFieldsByNumber(descriptor_)); |
- vector<const Descriptor::ExtensionRange*> sorted_extensions; |
+ std::vector<const Descriptor::ExtensionRange*> sorted_extensions; |
for (int i = 0; i < descriptor_->extension_range_count(); ++i) { |
sorted_extensions.push_back(descriptor_->extension_range(i)); |
} |
@@ -518,8 +523,13 @@ GenerateMessageSerializationMethods(io::Printer* printer) { |
} |
if (PreserveUnknownFields(descriptor_)) { |
- printer->Print( |
- "unknownFields.writeTo(output);\n"); |
+ if (descriptor_->options().message_set_wire_format()) { |
+ printer->Print( |
+ "unknownFields.writeAsMessageSetTo(output);\n"); |
+ } else { |
+ printer->Print( |
+ "unknownFields.writeTo(output);\n"); |
+ } |
} |
printer->Outdent(); |
@@ -548,8 +558,13 @@ GenerateMessageSerializationMethods(io::Printer* printer) { |
} |
if (PreserveUnknownFields(descriptor_)) { |
- printer->Print( |
- "size += unknownFields.getSerializedSize();\n"); |
+ if (descriptor_->options().message_set_wire_format()) { |
+ printer->Print( |
+ "size += unknownFields.getSerializedSizeAsMessageSet();\n"); |
+ } else { |
+ printer->Print( |
+ "size += unknownFields.getSerializedSize();\n"); |
+ } |
} |
printer->Outdent(); |
@@ -743,7 +758,7 @@ void ImmutableMessageLiteGenerator::GenerateDynamicMethodIsInitialized( |
case FieldDescriptor::LABEL_REPEATED: |
if (IsMapEntry(field->message_type())) { |
printer->Print( |
- "for ($type$ item : get$name$().values()) {\n" |
+ "for ($type$ item : get$name$Map().values()) {\n" |
" if (!item.isInitialized()) {\n" |
" if (shouldMemoize) {\n" |
" memoizedIsInitialized = 0;\n" |
@@ -934,14 +949,26 @@ void ImmutableMessageLiteGenerator::GenerateDynamicMethodMergeFromStream( |
if (PreserveUnknownFields(descriptor_)) { |
if (descriptor_->extension_range_count() > 0) { |
- printer->Print( |
- "default: {\n" |
- " if (!parseUnknownField(getDefaultInstanceForType(),\n" |
- " input, extensionRegistry, tag)) {\n" |
- " done = true;\n" // it's an endgroup tag |
- " }\n" |
- " break;\n" |
- "}\n"); |
+ if (descriptor_->options().message_set_wire_format()) { |
+ printer->Print( |
+ "default: {\n" |
+ " if (!parseUnknownFieldAsMessageSet(\n" |
+ " getDefaultInstanceForType(), input, extensionRegistry,\n" |
+ " tag)) {\n" |
+ " done = true;\n" // it's an endgroup tag |
+ " }\n" |
+ " break;\n" |
+ "}\n"); |
+ } else { |
+ printer->Print( |
+ "default: {\n" |
+ " if (!parseUnknownField(getDefaultInstanceForType(),\n" |
+ " input, extensionRegistry, tag)) {\n" |
+ " done = true;\n" // it's an endgroup tag |
+ " }\n" |
+ " break;\n" |
+ "}\n"); |
+ } |
} else { |
printer->Print( |
"default: {\n" |
@@ -970,7 +997,7 @@ void ImmutableMessageLiteGenerator::GenerateDynamicMethodMergeFromStream( |
printer->Print( |
"case $tag$: {\n", |
- "tag", SimpleItoa(tag)); |
+ "tag", SimpleItoa(static_cast<int32>(tag))); |
printer->Indent(); |
field_generators_.get(field).GenerateParsingCode(printer); |
@@ -987,7 +1014,7 @@ void ImmutableMessageLiteGenerator::GenerateDynamicMethodMergeFromStream( |
WireFormatLite::WIRETYPE_LENGTH_DELIMITED); |
printer->Print( |
"case $tag$: {\n", |
- "tag", SimpleItoa(packed_tag)); |
+ "tag", SimpleItoa(static_cast<int32>(packed_tag))); |
printer->Indent(); |
field_generators_.get(field).GenerateParsingCodeFromPacked(printer); |