diff --git a/objectivec/GPBAny.pbobjc.m b/objectivec/GPBAny.pbobjc.m index 9b7939d52b..f12bed96d0 100644 --- a/objectivec/GPBAny.pbobjc.m +++ b/objectivec/GPBAny.pbobjc.m @@ -86,14 +86,14 @@ typedef struct GPBAny__storage_ { fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription)) storageSize:sizeof(GPBAny__storage_) flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)]; -#if !GPBOBJC_SKIP_MESSAGE_TEXTFORMAT_EXTRAS - static const char *extraTextFormatInfo = + #if !GPBOBJC_SKIP_MESSAGE_TEXTFORMAT_EXTRAS + static const char *extraTextFormatInfo = "\001\001\004\241!!\000"; - [localDescriptor setupExtraTextInfo:extraTextFormatInfo]; -#endif // !GPBOBJC_SKIP_MESSAGE_TEXTFORMAT_EXTRAS -#if defined(DEBUG) && DEBUG + [localDescriptor setupExtraTextInfo:extraTextFormatInfo]; + #endif // !GPBOBJC_SKIP_MESSAGE_TEXTFORMAT_EXTRAS + #if defined(DEBUG) && DEBUG NSAssert(descriptor == nil, @"Startup recursed!"); -#endif // DEBUG + #endif // DEBUG descriptor = localDescriptor; } return descriptor; diff --git a/objectivec/GPBApi.pbobjc.m b/objectivec/GPBApi.pbobjc.m index b416445c0f..a2b0e990f5 100644 --- a/objectivec/GPBApi.pbobjc.m +++ b/objectivec/GPBApi.pbobjc.m @@ -145,9 +145,9 @@ typedef struct GPBApi__storage_ { fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription)) storageSize:sizeof(GPBApi__storage_) flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)]; -#if defined(DEBUG) && DEBUG + #if defined(DEBUG) && DEBUG NSAssert(descriptor == nil, @"Startup recursed!"); -#endif // DEBUG + #endif // DEBUG descriptor = localDescriptor; } return descriptor; @@ -267,14 +267,14 @@ typedef struct GPBMethod__storage_ { fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription)) storageSize:sizeof(GPBMethod__storage_) flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)]; -#if !GPBOBJC_SKIP_MESSAGE_TEXTFORMAT_EXTRAS - static const char *extraTextFormatInfo = + #if !GPBOBJC_SKIP_MESSAGE_TEXTFORMAT_EXTRAS + static const char *extraTextFormatInfo = "\002\002\007\244\241!!\000\004\010\244\241!!\000"; - [localDescriptor setupExtraTextInfo:extraTextFormatInfo]; -#endif // !GPBOBJC_SKIP_MESSAGE_TEXTFORMAT_EXTRAS -#if defined(DEBUG) && DEBUG + [localDescriptor setupExtraTextInfo:extraTextFormatInfo]; + #endif // !GPBOBJC_SKIP_MESSAGE_TEXTFORMAT_EXTRAS + #if defined(DEBUG) && DEBUG NSAssert(descriptor == nil, @"Startup recursed!"); -#endif // DEBUG + #endif // DEBUG descriptor = localDescriptor; } return descriptor; @@ -341,9 +341,9 @@ typedef struct GPBMixin__storage_ { fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription)) storageSize:sizeof(GPBMixin__storage_) flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)]; -#if defined(DEBUG) && DEBUG + #if defined(DEBUG) && DEBUG NSAssert(descriptor == nil, @"Startup recursed!"); -#endif // DEBUG + #endif // DEBUG descriptor = localDescriptor; } return descriptor; diff --git a/objectivec/GPBDuration.pbobjc.m b/objectivec/GPBDuration.pbobjc.m index a618e9cd57..1a54a76b30 100644 --- a/objectivec/GPBDuration.pbobjc.m +++ b/objectivec/GPBDuration.pbobjc.m @@ -86,9 +86,9 @@ typedef struct GPBDuration__storage_ { fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription)) storageSize:sizeof(GPBDuration__storage_) flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)]; -#if defined(DEBUG) && DEBUG + #if defined(DEBUG) && DEBUG NSAssert(descriptor == nil, @"Startup recursed!"); -#endif // DEBUG + #endif // DEBUG descriptor = localDescriptor; } return descriptor; diff --git a/objectivec/GPBEmpty.pbobjc.m b/objectivec/GPBEmpty.pbobjc.m index c33be8bb96..b69738c593 100644 --- a/objectivec/GPBEmpty.pbobjc.m +++ b/objectivec/GPBEmpty.pbobjc.m @@ -62,9 +62,9 @@ typedef struct GPBEmpty__storage_ { fieldCount:0 storageSize:sizeof(GPBEmpty__storage_) flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)]; -#if defined(DEBUG) && DEBUG + #if defined(DEBUG) && DEBUG NSAssert(descriptor == nil, @"Startup recursed!"); -#endif // DEBUG + #endif // DEBUG descriptor = localDescriptor; } return descriptor; diff --git a/objectivec/GPBFieldMask.pbobjc.m b/objectivec/GPBFieldMask.pbobjc.m index 347bcbef0e..8de5ad42ff 100644 --- a/objectivec/GPBFieldMask.pbobjc.m +++ b/objectivec/GPBFieldMask.pbobjc.m @@ -75,9 +75,9 @@ typedef struct GPBFieldMask__storage_ { fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription)) storageSize:sizeof(GPBFieldMask__storage_) flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)]; -#if defined(DEBUG) && DEBUG + #if defined(DEBUG) && DEBUG NSAssert(descriptor == nil, @"Startup recursed!"); -#endif // DEBUG + #endif // DEBUG descriptor = localDescriptor; } return descriptor; diff --git a/objectivec/GPBSourceContext.pbobjc.m b/objectivec/GPBSourceContext.pbobjc.m index cea417de1b..7ae605b32a 100644 --- a/objectivec/GPBSourceContext.pbobjc.m +++ b/objectivec/GPBSourceContext.pbobjc.m @@ -75,9 +75,9 @@ typedef struct GPBSourceContext__storage_ { fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription)) storageSize:sizeof(GPBSourceContext__storage_) flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)]; -#if defined(DEBUG) && DEBUG + #if defined(DEBUG) && DEBUG NSAssert(descriptor == nil, @"Startup recursed!"); -#endif // DEBUG + #endif // DEBUG descriptor = localDescriptor; } return descriptor; diff --git a/objectivec/GPBStruct.pbobjc.m b/objectivec/GPBStruct.pbobjc.m index 600b49574f..eabd761866 100644 --- a/objectivec/GPBStruct.pbobjc.m +++ b/objectivec/GPBStruct.pbobjc.m @@ -115,9 +115,9 @@ typedef struct GPBStruct__storage_ { fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription)) storageSize:sizeof(GPBStruct__storage_) flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)]; -#if defined(DEBUG) && DEBUG + #if defined(DEBUG) && DEBUG NSAssert(descriptor == nil, @"Startup recursed!"); -#endif // DEBUG + #endif // DEBUG descriptor = localDescriptor; } return descriptor; @@ -222,9 +222,9 @@ typedef struct GPBValue__storage_ { [localDescriptor setupOneofs:oneofs count:(uint32_t)(sizeof(oneofs) / sizeof(char*)) firstHasIndex:-1]; -#if defined(DEBUG) && DEBUG + #if defined(DEBUG) && DEBUG NSAssert(descriptor == nil, @"Startup recursed!"); -#endif // DEBUG + #endif // DEBUG descriptor = localDescriptor; } return descriptor; @@ -285,9 +285,9 @@ typedef struct GPBListValue__storage_ { fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription)) storageSize:sizeof(GPBListValue__storage_) flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)]; -#if defined(DEBUG) && DEBUG + #if defined(DEBUG) && DEBUG NSAssert(descriptor == nil, @"Startup recursed!"); -#endif // DEBUG + #endif // DEBUG descriptor = localDescriptor; } return descriptor; diff --git a/objectivec/GPBTimestamp.pbobjc.m b/objectivec/GPBTimestamp.pbobjc.m index dc6baebf2c..edd73498a2 100644 --- a/objectivec/GPBTimestamp.pbobjc.m +++ b/objectivec/GPBTimestamp.pbobjc.m @@ -86,9 +86,9 @@ typedef struct GPBTimestamp__storage_ { fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription)) storageSize:sizeof(GPBTimestamp__storage_) flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)]; -#if defined(DEBUG) && DEBUG + #if defined(DEBUG) && DEBUG NSAssert(descriptor == nil, @"Startup recursed!"); -#endif // DEBUG + #endif // DEBUG descriptor = localDescriptor; } return descriptor; diff --git a/objectivec/GPBType.pbobjc.m b/objectivec/GPBType.pbobjc.m index 7b44e39951..11378b66c6 100644 --- a/objectivec/GPBType.pbobjc.m +++ b/objectivec/GPBType.pbobjc.m @@ -307,9 +307,9 @@ typedef struct GPBType__storage_ { fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription)) storageSize:sizeof(GPBType__storage_) flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)]; -#if defined(DEBUG) && DEBUG + #if defined(DEBUG) && DEBUG NSAssert(descriptor == nil, @"Startup recursed!"); -#endif // DEBUG + #endif // DEBUG descriptor = localDescriptor; } return descriptor; @@ -463,14 +463,14 @@ typedef struct GPBField__storage_ { fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription)) storageSize:sizeof(GPBField__storage_) flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)]; -#if !GPBOBJC_SKIP_MESSAGE_TEXTFORMAT_EXTRAS - static const char *extraTextFormatInfo = + #if !GPBOBJC_SKIP_MESSAGE_TEXTFORMAT_EXTRAS + static const char *extraTextFormatInfo = "\001\006\004\241!!\000"; - [localDescriptor setupExtraTextInfo:extraTextFormatInfo]; -#endif // !GPBOBJC_SKIP_MESSAGE_TEXTFORMAT_EXTRAS -#if defined(DEBUG) && DEBUG + [localDescriptor setupExtraTextInfo:extraTextFormatInfo]; + #endif // !GPBOBJC_SKIP_MESSAGE_TEXTFORMAT_EXTRAS + #if defined(DEBUG) && DEBUG NSAssert(descriptor == nil, @"Startup recursed!"); -#endif // DEBUG + #endif // DEBUG descriptor = localDescriptor; } return descriptor; @@ -593,9 +593,9 @@ typedef struct GPBEnum__storage_ { fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription)) storageSize:sizeof(GPBEnum__storage_) flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)]; -#if defined(DEBUG) && DEBUG + #if defined(DEBUG) && DEBUG NSAssert(descriptor == nil, @"Startup recursed!"); -#endif // DEBUG + #endif // DEBUG descriptor = localDescriptor; } return descriptor; @@ -673,9 +673,9 @@ typedef struct GPBEnumValue__storage_ { fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription)) storageSize:sizeof(GPBEnumValue__storage_) flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)]; -#if defined(DEBUG) && DEBUG + #if defined(DEBUG) && DEBUG NSAssert(descriptor == nil, @"Startup recursed!"); -#endif // DEBUG + #endif // DEBUG descriptor = localDescriptor; } return descriptor; @@ -730,9 +730,9 @@ typedef struct GPBOption__storage_ { fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription)) storageSize:sizeof(GPBOption__storage_) flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)]; -#if defined(DEBUG) && DEBUG + #if defined(DEBUG) && DEBUG NSAssert(descriptor == nil, @"Startup recursed!"); -#endif // DEBUG + #endif // DEBUG descriptor = localDescriptor; } return descriptor; diff --git a/objectivec/GPBWrappers.pbobjc.m b/objectivec/GPBWrappers.pbobjc.m index 30461e3f6f..07be68bace 100644 --- a/objectivec/GPBWrappers.pbobjc.m +++ b/objectivec/GPBWrappers.pbobjc.m @@ -83,9 +83,9 @@ typedef struct GPBDoubleValue__storage_ { fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription)) storageSize:sizeof(GPBDoubleValue__storage_) flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)]; -#if defined(DEBUG) && DEBUG + #if defined(DEBUG) && DEBUG NSAssert(descriptor == nil, @"Startup recursed!"); -#endif // DEBUG + #endif // DEBUG descriptor = localDescriptor; } return descriptor; @@ -129,9 +129,9 @@ typedef struct GPBFloatValue__storage_ { fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription)) storageSize:sizeof(GPBFloatValue__storage_) flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)]; -#if defined(DEBUG) && DEBUG + #if defined(DEBUG) && DEBUG NSAssert(descriptor == nil, @"Startup recursed!"); -#endif // DEBUG + #endif // DEBUG descriptor = localDescriptor; } return descriptor; @@ -175,9 +175,9 @@ typedef struct GPBInt64Value__storage_ { fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription)) storageSize:sizeof(GPBInt64Value__storage_) flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)]; -#if defined(DEBUG) && DEBUG + #if defined(DEBUG) && DEBUG NSAssert(descriptor == nil, @"Startup recursed!"); -#endif // DEBUG + #endif // DEBUG descriptor = localDescriptor; } return descriptor; @@ -221,9 +221,9 @@ typedef struct GPBUInt64Value__storage_ { fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription)) storageSize:sizeof(GPBUInt64Value__storage_) flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)]; -#if defined(DEBUG) && DEBUG + #if defined(DEBUG) && DEBUG NSAssert(descriptor == nil, @"Startup recursed!"); -#endif // DEBUG + #endif // DEBUG descriptor = localDescriptor; } return descriptor; @@ -267,9 +267,9 @@ typedef struct GPBInt32Value__storage_ { fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription)) storageSize:sizeof(GPBInt32Value__storage_) flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)]; -#if defined(DEBUG) && DEBUG + #if defined(DEBUG) && DEBUG NSAssert(descriptor == nil, @"Startup recursed!"); -#endif // DEBUG + #endif // DEBUG descriptor = localDescriptor; } return descriptor; @@ -313,9 +313,9 @@ typedef struct GPBUInt32Value__storage_ { fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription)) storageSize:sizeof(GPBUInt32Value__storage_) flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)]; -#if defined(DEBUG) && DEBUG + #if defined(DEBUG) && DEBUG NSAssert(descriptor == nil, @"Startup recursed!"); -#endif // DEBUG + #endif // DEBUG descriptor = localDescriptor; } return descriptor; @@ -358,9 +358,9 @@ typedef struct GPBBoolValue__storage_ { fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription)) storageSize:sizeof(GPBBoolValue__storage_) flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)]; -#if defined(DEBUG) && DEBUG + #if defined(DEBUG) && DEBUG NSAssert(descriptor == nil, @"Startup recursed!"); -#endif // DEBUG + #endif // DEBUG descriptor = localDescriptor; } return descriptor; @@ -404,9 +404,9 @@ typedef struct GPBStringValue__storage_ { fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription)) storageSize:sizeof(GPBStringValue__storage_) flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)]; -#if defined(DEBUG) && DEBUG + #if defined(DEBUG) && DEBUG NSAssert(descriptor == nil, @"Startup recursed!"); -#endif // DEBUG + #endif // DEBUG descriptor = localDescriptor; } return descriptor; @@ -450,9 +450,9 @@ typedef struct GPBBytesValue__storage_ { fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription)) storageSize:sizeof(GPBBytesValue__storage_) flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown | GPBDescriptorInitializationFlag_ClosedEnumSupportKnown)]; -#if defined(DEBUG) && DEBUG + #if defined(DEBUG) && DEBUG NSAssert(descriptor == nil, @"Startup recursed!"); -#endif // DEBUG + #endif // DEBUG descriptor = localDescriptor; } return descriptor; diff --git a/src/google/protobuf/compiler/objectivec/message.cc b/src/google/protobuf/compiler/objectivec/message.cc index 932f003e20..ddc8a6020e 100644 --- a/src/google/protobuf/compiler/objectivec/message.cc +++ b/src/google/protobuf/compiler/objectivec/message.cc @@ -36,7 +36,6 @@ #include #include -#include "absl/container/flat_hash_map.h" #include "absl/log/absl_log.h" #include "absl/strings/escaping.h" #include "absl/strings/str_cat.h" @@ -396,33 +395,6 @@ void MessageGenerator::GenerateSource(io::Printer* printer) const { if (IsMapEntryMessage(descriptor_)) { return; } - printer->Print( - // clang-format off - "#pragma mark - $classname$\n" - "\n", - // clang-format on - "classname", class_name_); - - if (!deprecated_attribute_.empty()) { - // No warnings when compiling the impl of this deprecated class. - // clang-format off - printer->Print( - "#pragma clang diagnostic push\n" - "#pragma clang diagnostic ignored \"-Wdeprecated-implementations\"\n" - "\n"); - // clang-format on - } - - printer->Print("@implementation $classname$\n\n", "classname", class_name_); - - for (const auto& generator : oneof_generators_) { - generator->GeneratePropertyImplementation(printer); - } - - for (int i = 0; i < descriptor_->field_count(); i++) { - field_generators_.get(descriptor_->field(i)) - .GeneratePropertyImplementation(printer); - } std::unique_ptr sorted_fields( SortFieldsByNumber(descriptor_)); @@ -432,91 +404,23 @@ void MessageGenerator::GenerateSource(io::Printer* printer) const { std::vector sorted_extensions( SimpleExtensionRange::Normalize(descriptor_)); - printer->Print( - // clang-format off - "\n" - "typedef struct $classname$__storage_ {\n" - " uint32_t _has_storage_[$sizeof_has_storage$];\n", - // clang-format on - "classname", class_name_, "sizeof_has_storage", - absl::StrCat(sizeof_has_storage_)); - printer->Indent(); - for (int i = 0; i < descriptor_->field_count(); i++) { - field_generators_.get(size_order_fields[i]) - .GenerateFieldStorageDeclaration(printer); - } - printer->Outdent(); - - printer->Print("} $classname$__storage_;\n\n", "classname", class_name_); - - // clang-format off - printer->Print( - "// This method is threadsafe because it is initially called\n" - "// in +initialize for each subclass.\n" - "+ (GPBDescriptor *)descriptor {\n" - " static GPBDescriptor *descriptor = nil;\n" - " if (!descriptor) {\n"); - // clang-format on - - // If the message scopes extensions, trigger the root class - // +initialize/+extensionRegistry as that is where the runtime support for - // extensions lives. - if (descriptor_->extension_count() > 0) { - // clang-format off - printer->Print( - " // Start up the root class to support the scoped extensions.\n" - " __unused Class rootStartup = [$root_class_name$ class];\n", - "root_class_name", FileClassName(descriptor_->file())); - // clang-format on - } else { - // The Root class has a debug runtime check, so if not starting that - // up, add the check. - printer->Print(" GPB_DEBUG_CHECK_RUNTIME_VERSIONS();\n"); - } - - TextFormatDecodeData text_format_decode_data; bool has_fields = descriptor_->field_count() > 0; bool need_defaults = field_generators_.DoesAnyFieldHaveNonZeroDefault(); - std::string field_description_type; - if (need_defaults) { - field_description_type = "GPBMessageFieldDescriptionWithDefault"; - } else { - field_description_type = "GPBMessageFieldDescription"; - } - if (has_fields) { - printer->Indent(); - printer->Indent(); - printer->Print("static $field_description_type$ fields[] = {\n", - "field_description_type", field_description_type); - printer->Indent(); - for (int i = 0; i < descriptor_->field_count(); ++i) { - const FieldGenerator& field_generator = - field_generators_.get(sorted_fields[i]); - field_generator.GenerateFieldDescription(printer, need_defaults); - if (field_generator.needs_textformat_name_support()) { - text_format_decode_data.AddString(sorted_fields[i]->number(), - field_generator.generated_objc_name(), - field_generator.raw_field_name()); - } + + TextFormatDecodeData text_format_decode_data; + for (int i = 0; i < descriptor_->field_count(); ++i) { + const FieldGenerator& field_generator = + field_generators_.get(sorted_fields[i]); + if (field_generator.needs_textformat_name_support()) { + text_format_decode_data.AddString(sorted_fields[i]->number(), + field_generator.generated_objc_name(), + field_generator.raw_field_name()); } - printer->Outdent(); - printer->Print("};\n"); - printer->Outdent(); - printer->Outdent(); } - absl::flat_hash_map vars; - vars["classname"] = class_name_; - vars["message_name"] = descriptor_->name(); - vars["class_reference"] = ObjCClass(class_name_); - vars["file_description_name"] = file_description_name_; - vars["fields"] = has_fields ? "fields" : "NULL"; - if (has_fields) { - vars["fields_count"] = absl::StrCat("(uint32_t)(sizeof(fields) / sizeof(", - field_description_type, "))"); - } else { - vars["fields_count"] = "0"; - } + const absl::string_view field_description_type( + need_defaults ? "GPBMessageFieldDescriptionWithDefault" + : "GPBMessageFieldDescription"); std::vector init_flags; init_flags.push_back("GPBDescriptorInitializationFlag_UsesClassRefs"); @@ -529,98 +433,215 @@ void MessageGenerator::GenerateSource(io::Printer* printer) const { if (descriptor_->options().message_set_wire_format()) { init_flags.push_back("GPBDescriptorInitializationFlag_WireFormat"); } - vars["init_flags"] = - BuildFlagsString(FLAGTYPE_DESCRIPTOR_INITIALIZATION, init_flags); - - // clang-format off - printer->Print( - vars, - " GPBDescriptor *localDescriptor =\n" - " [GPBDescriptor allocDescriptorForClass:$class_reference$\n" - " messageName:@\"$message_name$\"\n" - " fileDescription:&$file_description_name$\n" - " fields:$fields$\n" - " fieldCount:$fields_count$\n" - " storageSize:sizeof($classname$__storage_)\n" - " flags:$init_flags$];\n"); - // clang-format on - if (!oneof_generators_.empty()) { - printer->Print(" static const char *oneofs[] = {\n"); - for (const auto& generator : oneof_generators_) { - printer->Print(" \"$name$\",\n", "name", - generator->DescriptorName()); - } - printer->Print( - // clang-format off - " };\n" - " [localDescriptor setupOneofs:oneofs\n" - " count:(uint32_t)(sizeof(oneofs) / sizeof(char*))\n" - " firstHasIndex:$first_has_index$];\n", - // clang-format on - "first_has_index", oneof_generators_[0]->HasIndexAsString()); - } - if (text_format_decode_data.num_entries() != 0) { - const std::string text_format_data_str(text_format_decode_data.Data()); - // clang-format off - printer->Print( - "#if !GPBOBJC_SKIP_MESSAGE_TEXTFORMAT_EXTRAS\n" - " static const char *extraTextFormatInfo ="); - // clang-format on - static const int kBytesPerLine = 40; // allow for escaping - for (int i = 0; i < text_format_data_str.size(); i += kBytesPerLine) { - printer->Print("\n \"$data$\"", "data", - EscapeTrigraphs(absl::CEscape( - text_format_data_str.substr(i, kBytesPerLine)))); - } - // clang-format off - printer->Print( - ";\n" - " [localDescriptor setupExtraTextInfo:extraTextFormatInfo];\n" - "#endif // !GPBOBJC_SKIP_MESSAGE_TEXTFORMAT_EXTRAS\n"); - // clang-format on - } - if (!sorted_extensions.empty()) { - printer->Print(" static const GPBExtensionRange ranges[] = {\n"); - for (const auto& extension_range : sorted_extensions) { - printer->Print(" { .start = $start$, .end = $end$ },\n", "start", - absl::StrCat(extension_range.start), "end", - absl::StrCat(extension_range.end)); - } - // clang-format off - printer->Print( - " };\n" - " [localDescriptor setupExtensionRanges:ranges\n" - " count:(uint32_t)(sizeof(ranges) / sizeof(GPBExtensionRange))];\n"); - // clang-format on - } - if (descriptor_->containing_type() != nullptr) { - std::string containing_class = ClassName(descriptor_->containing_type()); - std::string parent_class_ref = ObjCClass(containing_class); - printer->Print( - // clang-format off - " [localDescriptor setupContainingMessageClass:$parent_class_ref$];\n", - // clang-format on - "parent_class_ref", parent_class_ref); - } - // clang-format off - printer->Print( - "#if defined(DEBUG) && DEBUG\n" - " NSAssert(descriptor == nil, @\"Startup recursed!\");\n" - "#endif // DEBUG\n" - " descriptor = localDescriptor;\n" - " }\n" - " return descriptor;\n" - "}\n\n" - "@end\n\n"); - // clang-format on - - if (!deprecated_attribute_.empty()) { - // clang-format off - printer->Print( - "#pragma clang diagnostic pop\n" - "\n"); - // clang-format on - } + + printer->Emit( + {{"classname", class_name_}, + {"clang_diagnostic_push", + [&] { + if (deprecated_attribute_.empty()) return; + // No warnings when compiling the impl of this deprecated class. + printer->Emit(R"objc( + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Wdeprecated-implementations" + )objc"); + printer->Emit("\n"); + }}, + {"clang_diagnostic_pop", + [&] { + if (deprecated_attribute_.empty()) return; + printer->Emit(R"objc( + #pragma clang diagnostic pop + )objc"); + printer->Emit("\n"); + }}, + {"property_implementation", + [&] { + for (const auto& generator : oneof_generators_) { + generator->GeneratePropertyImplementation(printer); + } + for (int i = 0; i < descriptor_->field_count(); i++) { + field_generators_.get(descriptor_->field(i)) + .GeneratePropertyImplementation(printer); + } + }}, + {"sizeof_has_storage", sizeof_has_storage_}, + {"storage_fields", + [&] { + for (int i = 0; i < descriptor_->field_count(); i++) { + field_generators_.get(size_order_fields[i]) + .GenerateFieldStorageDeclaration(printer); + } + }}, + {"descriptor_startup", + [&] { + // If the message scopes extensions, trigger the root class + // +initialize/+extensionRegistry as that is where the + // runtime support for extensions lives. + if (descriptor_->extension_count() > 0) { + printer->Emit(R"objc( + // Start up the root class to support the scoped extensions. + __unused Class rootStartup = [$root_class_name$ class]; + )objc"); + } else { + // The Root class has a debug runtime check, so if not + // starting that up, add the check. + printer->Emit("GPB_DEBUG_CHECK_RUNTIME_VERSIONS();\n"); + } + }}, + {"field_description_type", field_description_type}, + {"declare_fields_static", + [&] { + if (!has_fields) return; + printer->Emit(R"objc( + static $field_description_type$ fields[] = { + $declare_fields_static_fields$, + }; + )objc"); + }}, + {"declare_fields_static_fields", + [&] { + for (int i = 0; i < descriptor_->field_count(); ++i) { + const FieldGenerator& field_generator = + field_generators_.get(sorted_fields[i]); + field_generator.GenerateFieldDescription(printer, need_defaults); + } + }}, + {"message_name", descriptor_->name()}, + {"class_reference", ObjCClass(class_name_)}, + {"file_description_name", file_description_name_}, + {"fields", has_fields ? "fields" : "NULL"}, + {"fields_count", + has_fields ? absl::StrCat("(uint32_t)(sizeof(fields) / sizeof(", + field_description_type, "))") + : "0"}, + {"init_flags", + BuildFlagsString(FLAGTYPE_DESCRIPTOR_INITIALIZATION, init_flags)}, + {"oneof_support", + [&] { + if (oneof_generators_.empty()) return; + printer->Emit( + {{"first_has_index", oneof_generators_[0]->HasIndexAsString()}}, + R"objc( + static const char *oneofs[] = { + $declare_oneof_static_oneofs$, + }; + [localDescriptor setupOneofs:oneofs + count:(uint32_t)(sizeof(oneofs) / sizeof(char*)) + firstHasIndex:$first_has_index$]; + )objc"); + }}, + {"declare_oneof_static_oneofs", + [&] { + for (const auto& generator : oneof_generators_) { + printer->Emit({{"name", generator->DescriptorName()}}, R"objc( + "$name$", + )objc"); + } + }}, + {"text_format_decode_support", + [&] { + if (text_format_decode_data.num_entries() == 0) return; + + printer->Emit(R"objc( + #if !GPBOBJC_SKIP_MESSAGE_TEXTFORMAT_EXTRAS + static const char *extraTextFormatInfo = + $text_format_decode_support_blob$ + [localDescriptor setupExtraTextInfo:extraTextFormatInfo]; + #endif // !GPBOBJC_SKIP_MESSAGE_TEXTFORMAT_EXTRAS + )objc"); + }}, + {"text_format_decode_support_blob", + [&] { + static const int kBytesPerLine = 40; // allow for escaping + const std::string text_format_data_str( + text_format_decode_data.Data()); + for (size_t i = 0; i < text_format_data_str.size(); + i += kBytesPerLine) { + printer->Emit( + {{"data", EscapeTrigraphs(absl::CEscape( + text_format_data_str.substr(i, kBytesPerLine)))}, + {"ending_semi", + (i + kBytesPerLine) < text_format_data_str.size() ? "" + : ";"}}, + R"objc( + "$data$"$ending_semi$ + )objc"); + } + }}, + {"extension_range_support", + [&] { + if (sorted_extensions.empty()) return; + printer->Emit( + {{"ranges", + [&] { + for (const auto& extension_range : sorted_extensions) { + printer->Emit({{"start", extension_range.start}, + {"end", extension_range.end}}, + "{ .start = $start$, .end = $end$ },\n"); + } + }}}, + R"objc( + static const GPBExtensionRange ranges[] = { + $ranges$, + }; + [localDescriptor setupExtensionRanges:ranges + count:(uint32_t)(sizeof(ranges) / sizeof(GPBExtensionRange))]; + )objc"); + }}, + {"containing_type_support", + [&] { + if (descriptor_->containing_type() == nullptr) return; + std::string containing_class = + ClassName(descriptor_->containing_type()); + std::string parent_class_ref = ObjCClass(containing_class); + printer->Emit({{"parent_class_ref", parent_class_ref}}, R"objc( + [localDescriptor setupContainingMessageClass:$parent_class_ref$]; + )objc"); + }}}, + R"objc( + #pragma mark - $classname$ + + $clang_diagnostic_push$; + @implementation $classname$ + + $property_implementation$ + + typedef struct $classname$__storage_ { + uint32_t _has_storage_[$sizeof_has_storage$]; + $storage_fields$, + } $classname$__storage_; + + // This method is threadsafe because it is initially called + // in +initialize for each subclass. + + (GPBDescriptor *)descriptor { + static GPBDescriptor *descriptor = nil; + if (!descriptor) { + $descriptor_startup$; + $declare_fields_static$; + GPBDescriptor *localDescriptor = + [GPBDescriptor allocDescriptorForClass:$class_reference$ + messageName:@"$message_name$" + fileDescription:&$file_description_name$ + fields:$fields$ + fieldCount:$fields_count$ + storageSize:sizeof($classname$__storage_) + flags:$init_flags$]; + $oneof_support$; + $text_format_decode_support$; + $extension_range_support$; + $containing_type_support$; + #if defined(DEBUG) && DEBUG + NSAssert(descriptor == nil, @"Startup recursed!"); + #endif // DEBUG + descriptor = localDescriptor; + } + return descriptor; + } + + @end + + $clang_diagnostic_pop$; + )objc"); for (int i = 0; i < descriptor_->field_count(); i++) { field_generators_.get(descriptor_->field(i))