Index: third_party/protobuf/src/google/protobuf/compiler/objectivec/objectivec_message.cc |
diff --git a/third_party/protobuf/src/google/protobuf/compiler/objectivec/objectivec_message.cc b/third_party/protobuf/src/google/protobuf/compiler/objectivec/objectivec_message.cc |
index bf272596cb2409e824530e2c6c13dba5af82dbe8..4c6e1b55626ada38dcbb1d0ab98a2c6e90b0d576 100644 |
--- a/third_party/protobuf/src/google/protobuf/compiler/objectivec/objectivec_message.cc |
+++ b/third_party/protobuf/src/google/protobuf/compiler/objectivec/objectivec_message.cc |
@@ -246,6 +246,22 @@ void MessageGenerator::DetermineForwardDeclarations(set<string>* fwd_decls) { |
} |
} |
+bool MessageGenerator::IncludesOneOfDefinition() const { |
+ if (!oneof_generators_.empty()) { |
+ return true; |
+ } |
+ |
+ for (vector<MessageGenerator*>::const_iterator iter = |
+ nested_message_generators_.begin(); |
+ iter != nested_message_generators_.end(); ++iter) { |
+ if ((*iter)->IncludesOneOfDefinition()) { |
+ return true; |
+ } |
+ } |
+ |
+ return false; |
+} |
+ |
void MessageGenerator::GenerateEnumHeader(io::Printer* printer) { |
for (vector<EnumGenerator*>::iterator iter = enum_generators_.begin(); |
iter != enum_generators_.end(); ++iter) { |
@@ -315,7 +331,7 @@ void MessageGenerator::GenerateMessageHeader(io::Printer* printer) { |
string message_comments; |
SourceLocation location; |
if (descriptor_->GetSourceLocation(&location)) { |
- message_comments = BuildCommentsString(location); |
+ message_comments = BuildCommentsString(location, false); |
} else { |
message_comments = ""; |
} |
@@ -505,7 +521,8 @@ void MessageGenerator::GenerateSource(io::Printer* printer) { |
if (descriptor_->options().message_set_wire_format()) { |
init_flags.push_back("GPBDescriptorInitializationFlag_WireFormat"); |
} |
- vars["init_flags"] = BuildFlagsString(init_flags); |
+ vars["init_flags"] = BuildFlagsString(FLAGTYPE_DESCRIPTOR_INITIALIZATION, |
+ init_flags); |
printer->Print( |
vars, |
@@ -563,6 +580,19 @@ void MessageGenerator::GenerateSource(io::Printer* printer) { |
" [localDescriptor setupExtensionRanges:ranges\n" |
" count:(uint32_t)(sizeof(ranges) / sizeof(GPBExtensionRange))];\n"); |
} |
+ if (descriptor_->containing_type() != NULL) { |
+ string parent_class_name = ClassName(descriptor_->containing_type()); |
+ printer->Print( |
+ " [localDescriptor setupContainingMessageClassName:GPBStringifySymbol($parent_name$)];\n", |
+ "parent_name", parent_class_name); |
+ } |
+ string suffix_added; |
+ ClassName(descriptor_, &suffix_added); |
+ if (suffix_added.size() > 0) { |
+ printer->Print( |
+ " [localDescriptor setupMessageClassNameSuffix:@\"$suffix$\"];\n", |
+ "suffix", suffix_added); |
+ } |
printer->Print( |
" NSAssert(descriptor == nil, @\"Startup recursed!\");\n" |
" descriptor = localDescriptor;\n" |