From ebcd843fd64a5816ac151f161c36e5bcab78d902 Mon Sep 17 00:00:00 2001 From: Alexey Khokhlov Date: Tue, 27 Jan 2015 20:12:37 +0300 Subject: [PATCH] Generic Response Object Serialization https://github.com/alexeyxo/protobuf-swift/issues/26 --- ProtocolBuffers.podspec | 4 +- src/compiler/objc_message.cc | 4 +- src/runtime/Classes/Descriptor.pb.h | 46 +++--- src/runtime/Classes/Descriptor.pb.m | 90 ++++++++++- src/runtime/Classes/GeneratedMessage.h | 11 ++ .../UserInterfaceState.xcuserstate | Bin 111590 -> 112924 bytes src/runtime/Tests/Unittest.pb.h | 146 +++++++++--------- src/runtime/Tests/Unittest.pb.m | 124 ++++++++++++--- .../Tests/Unittest_custom_options.pb.h | 55 ++++--- .../Tests/Unittest_custom_options.pb.m | 51 ++++++ .../Tests/Unittest_embed_optimize_for.pb.h | 2 +- .../Tests/Unittest_enormous_descriptor.pb.h | 2 +- src/runtime/Tests/Unittest_import.pb.h | 3 +- src/runtime/Tests/Unittest_import.pb.m | 13 ++ src/runtime/Tests/Unittest_import_lite.pb.h | 3 +- src/runtime/Tests/Unittest_import_lite.pb.m | 13 ++ src/runtime/Tests/Unittest_import_public.pb.h | 2 +- .../Tests/Unittest_import_public_lite.pb.h | 2 +- src/runtime/Tests/Unittest_lite.pb.h | 42 ++--- src/runtime/Tests/Unittest_lite.pb.m | 46 ++++-- .../Tests/Unittest_lite_imports_nonlite.pb.h | 2 +- src/runtime/Tests/Unittest_mset.pb.h | 12 +- .../Tests/Unittest_no_generic_services.pb.h | 3 +- .../Tests/Unittest_no_generic_services.pb.m | 9 ++ src/runtime/Tests/Unittest_optimize_for.pb.h | 6 +- 25 files changed, 502 insertions(+), 189 deletions(-) diff --git a/ProtocolBuffers.podspec b/ProtocolBuffers.podspec index 9832092..f2a41c8 100755 --- a/ProtocolBuffers.podspec +++ b/ProtocolBuffers.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = "ProtocolBuffers" - s.version = "1.9.6" + s.version = "1.9.7" s.summary = "Protocol Buffers for Objective-C" s.description = <<-DESC An implementation of Protocol Buffers 2.6 in Objective C. @@ -16,7 +16,7 @@ Pod::Spec.new do |s| DESC s.homepage = "http://protobuf.io#objc" s.license = "Apache 2.0" - + s.documentation_url = "https://github.com/alexeyxo/protobuf-objc" s.license = { :type => 'Apache License, Version 2.0', :text => <<-LICENSE Licensed under the Apache License, Version 2.0 (the "License"); diff --git a/src/compiler/objc_message.cc b/src/compiler/objc_message.cc index d4513fd..80ebe89 100644 --- a/src/compiler/objc_message.cc +++ b/src/compiler/objc_message.cc @@ -254,12 +254,12 @@ namespace google { namespace protobuf { namespace compiler { namespace objective if (descriptor_->extension_range_count() > 0) { printer->Print( - "@interface $classname$ : PBExtendableMessage {\n" + "@interface $classname$ : PBExtendableMessage {\n" "@private\n", "classname", ClassName(descriptor_)); } else { printer->Print( - "@interface $classname$ : PBGeneratedMessage {\n" + "@interface $classname$ : PBGeneratedMessage {\n" "@private\n", "classname", ClassName(descriptor_)); } diff --git a/src/runtime/Classes/Descriptor.pb.h b/src/runtime/Classes/Descriptor.pb.h index 70b1b90..b8bfe23 100644 --- a/src/runtime/Classes/Descriptor.pb.h +++ b/src/runtime/Classes/Descriptor.pb.h @@ -80,6 +80,7 @@ typedef NS_ENUM(SInt32, PBFieldDescriptorProtoType) { }; BOOL PBFieldDescriptorProtoTypeIsValidValue(PBFieldDescriptorProtoType value); +NSString *NSStringFromPBFieldDescriptorProtoType(PBFieldDescriptorProtoType value); typedef NS_ENUM(SInt32, PBFieldDescriptorProtoLabel) { PBFieldDescriptorProtoLabelLabelOptional = 1, @@ -88,6 +89,7 @@ typedef NS_ENUM(SInt32, PBFieldDescriptorProtoLabel) { }; BOOL PBFieldDescriptorProtoLabelIsValidValue(PBFieldDescriptorProtoLabel value); +NSString *NSStringFromPBFieldDescriptorProtoLabel(PBFieldDescriptorProtoLabel value); typedef NS_ENUM(SInt32, PBFileOptionsOptimizeMode) { PBFileOptionsOptimizeModeSpeed = 1, @@ -96,6 +98,7 @@ typedef NS_ENUM(SInt32, PBFileOptionsOptimizeMode) { }; BOOL PBFileOptionsOptimizeModeIsValidValue(PBFileOptionsOptimizeMode value); +NSString *NSStringFromPBFileOptionsOptimizeMode(PBFileOptionsOptimizeMode value); typedef NS_ENUM(SInt32, PBFieldOptionsCType) { PBFieldOptionsCTypeString = 0, @@ -104,6 +107,7 @@ typedef NS_ENUM(SInt32, PBFieldOptionsCType) { }; BOOL PBFieldOptionsCTypeIsValidValue(PBFieldOptionsCType value); +NSString *NSStringFromPBFieldOptionsCType(PBFieldOptionsCType value); @interface PBDescriptorRoot : NSObject { @@ -112,7 +116,7 @@ BOOL PBFieldOptionsCTypeIsValidValue(PBFieldOptionsCType value); + (void) registerAllExtensions:(PBMutableExtensionRegistry*) registry; @end -@interface PBFileDescriptorSet : PBGeneratedMessage { +@interface PBFileDescriptorSet : PBGeneratedMessage { @private NSMutableArray * fileArray; } @@ -161,7 +165,7 @@ BOOL PBFieldOptionsCTypeIsValidValue(PBFieldOptionsCType value); - (PBFileDescriptorSetBuilder *)clearFile; @end -@interface PBFileDescriptorProto : PBGeneratedMessage { +@interface PBFileDescriptorProto : PBGeneratedMessage { @private BOOL hasName_:1; BOOL hasPackage_:1; @@ -306,7 +310,7 @@ BOOL PBFieldOptionsCTypeIsValidValue(PBFieldOptionsCType value); - (PBFileDescriptorProtoBuilder*) clearSourceCodeInfo; @end -@interface PBDescriptorProto : PBGeneratedMessage { +@interface PBDescriptorProto : PBGeneratedMessage { @private BOOL hasName_:1; BOOL hasOptions_:1; @@ -354,7 +358,7 @@ BOOL PBFieldOptionsCTypeIsValidValue(PBFieldOptionsCType value); + (PBDescriptorProto*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; @end -@interface PBDescriptorProtoExtensionRange : PBGeneratedMessage { +@interface PBDescriptorProtoExtensionRange : PBGeneratedMessage { @private BOOL hasStart_:1; BOOL hasEnd_:1; @@ -478,7 +482,7 @@ BOOL PBFieldOptionsCTypeIsValidValue(PBFieldOptionsCType value); - (PBDescriptorProtoBuilder*) clearOptions; @end -@interface PBFieldDescriptorProto : PBGeneratedMessage { +@interface PBFieldDescriptorProto : PBGeneratedMessage { @private BOOL hasNumber_:1; BOOL hasOneofIndex_:1; @@ -601,7 +605,7 @@ BOOL PBFieldOptionsCTypeIsValidValue(PBFieldOptionsCType value); - (PBFieldDescriptorProtoBuilder*) clearOptions; @end -@interface PBOneofDescriptorProto : PBGeneratedMessage { +@interface PBOneofDescriptorProto : PBGeneratedMessage { @private BOOL hasName_:1; NSString* name; @@ -650,7 +654,7 @@ BOOL PBFieldOptionsCTypeIsValidValue(PBFieldOptionsCType value); - (PBOneofDescriptorProtoBuilder*) clearName; @end -@interface PBEnumDescriptorProto : PBGeneratedMessage { +@interface PBEnumDescriptorProto : PBGeneratedMessage { @private BOOL hasName_:1; BOOL hasOptions_:1; @@ -719,7 +723,7 @@ BOOL PBFieldOptionsCTypeIsValidValue(PBFieldOptionsCType value); - (PBEnumDescriptorProtoBuilder*) clearOptions; @end -@interface PBEnumValueDescriptorProto : PBGeneratedMessage { +@interface PBEnumValueDescriptorProto : PBGeneratedMessage { @private BOOL hasNumber_:1; BOOL hasName_:1; @@ -788,7 +792,7 @@ BOOL PBFieldOptionsCTypeIsValidValue(PBFieldOptionsCType value); - (PBEnumValueDescriptorProtoBuilder*) clearOptions; @end -@interface PBServiceDescriptorProto : PBGeneratedMessage { +@interface PBServiceDescriptorProto : PBGeneratedMessage { @private BOOL hasName_:1; BOOL hasOptions_:1; @@ -857,7 +861,7 @@ BOOL PBFieldOptionsCTypeIsValidValue(PBFieldOptionsCType value); - (PBServiceDescriptorProtoBuilder*) clearOptions; @end -@interface PBMethodDescriptorProto : PBGeneratedMessage { +@interface PBMethodDescriptorProto : PBGeneratedMessage { @private BOOL hasName_:1; BOOL hasInputType_:1; @@ -935,7 +939,7 @@ BOOL PBFieldOptionsCTypeIsValidValue(PBFieldOptionsCType value); - (PBMethodDescriptorProtoBuilder*) clearOptions; @end -@interface PBFileOptions : PBExtendableMessage { +@interface PBFileOptions : PBExtendableMessage { @private BOOL hasJavaMultipleFiles_:1; BOOL hasJavaGenerateEqualsAndHash_:1; @@ -1083,7 +1087,7 @@ BOOL PBFieldOptionsCTypeIsValidValue(PBFieldOptionsCType value); - (PBFileOptionsBuilder *)clearUninterpretedOption; @end -@interface PBMessageOptions : PBExtendableMessage { +@interface PBMessageOptions : PBExtendableMessage { @private BOOL hasMessageSetWireFormat_:1; BOOL hasNoStandardDescriptorAccessor_:1; @@ -1159,7 +1163,7 @@ BOOL PBFieldOptionsCTypeIsValidValue(PBFieldOptionsCType value); - (PBMessageOptionsBuilder *)clearUninterpretedOption; @end -@interface PBFieldOptions : PBExtendableMessage { +@interface PBFieldOptions : PBExtendableMessage { @private BOOL hasPacked_:1; BOOL hasLazy_:1; @@ -1262,7 +1266,7 @@ BOOL PBFieldOptionsCTypeIsValidValue(PBFieldOptionsCType value); - (PBFieldOptionsBuilder *)clearUninterpretedOption; @end -@interface PBEnumOptions : PBExtendableMessage { +@interface PBEnumOptions : PBExtendableMessage { @private BOOL hasAllowAlias_:1; BOOL hasDeprecated_:1; @@ -1329,7 +1333,7 @@ BOOL PBFieldOptionsCTypeIsValidValue(PBFieldOptionsCType value); - (PBEnumOptionsBuilder *)clearUninterpretedOption; @end -@interface PBEnumValueOptions : PBExtendableMessage { +@interface PBEnumValueOptions : PBExtendableMessage { @private BOOL hasDeprecated_:1; BOOL deprecated_:1; @@ -1387,7 +1391,7 @@ BOOL PBFieldOptionsCTypeIsValidValue(PBFieldOptionsCType value); - (PBEnumValueOptionsBuilder *)clearUninterpretedOption; @end -@interface PBServiceOptions : PBExtendableMessage { +@interface PBServiceOptions : PBExtendableMessage { @private BOOL hasDeprecated_:1; BOOL deprecated_:1; @@ -1445,7 +1449,7 @@ BOOL PBFieldOptionsCTypeIsValidValue(PBFieldOptionsCType value); - (PBServiceOptionsBuilder *)clearUninterpretedOption; @end -@interface PBMethodOptions : PBExtendableMessage { +@interface PBMethodOptions : PBExtendableMessage { @private BOOL hasDeprecated_:1; BOOL deprecated_:1; @@ -1503,7 +1507,7 @@ BOOL PBFieldOptionsCTypeIsValidValue(PBFieldOptionsCType value); - (PBMethodOptionsBuilder *)clearUninterpretedOption; @end -@interface PBUninterpretedOption : PBGeneratedMessage { +@interface PBUninterpretedOption : PBGeneratedMessage { @private BOOL hasDoubleValue_:1; BOOL hasNegativeIntValue_:1; @@ -1552,7 +1556,7 @@ BOOL PBFieldOptionsCTypeIsValidValue(PBFieldOptionsCType value); + (PBUninterpretedOption*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; @end -@interface PBUninterpretedOptionNamePart : PBGeneratedMessage { +@interface PBUninterpretedOptionNamePart : PBGeneratedMessage { @private BOOL hasIsExtension_:1; BOOL hasNamePart_:1; @@ -1664,7 +1668,7 @@ BOOL PBFieldOptionsCTypeIsValidValue(PBFieldOptionsCType value); - (PBUninterpretedOptionBuilder*) clearAggregateValue; @end -@interface PBSourceCodeInfo : PBGeneratedMessage { +@interface PBSourceCodeInfo : PBGeneratedMessage { @private NSMutableArray * locationArray; } @@ -1689,7 +1693,7 @@ BOOL PBFieldOptionsCTypeIsValidValue(PBFieldOptionsCType value); + (PBSourceCodeInfo*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; @end -@interface PBSourceCodeInfoLocation : PBGeneratedMessage { +@interface PBSourceCodeInfoLocation : PBGeneratedMessage { @private BOOL hasLeadingComments_:1; BOOL hasTrailingComments_:1; diff --git a/src/runtime/Classes/Descriptor.pb.m b/src/runtime/Classes/Descriptor.pb.m index b4b1d29..c85248f 100644 --- a/src/runtime/Classes/Descriptor.pb.m +++ b/src/runtime/Classes/Descriptor.pb.m @@ -2219,10 +2219,10 @@ - (void) writeDescriptionTo:(NSMutableString*) output withIndent:(NSString*) ind [output appendFormat:@"%@%@: %@\n", indent, @"number", [NSNumber numberWithInteger:self.number]]; } if (self.hasLabel) { - [output appendFormat:@"%@%@: %@\n", indent, @"label", [NSNumber numberWithInteger:self.label]]; + [output appendFormat:@"%@%@: %@\n", indent, @"label", NSStringFromPBFieldDescriptorProtoLabel(self.label)]; } if (self.hasType) { - [output appendFormat:@"%@%@: %@\n", indent, @"type", [NSNumber numberWithInteger:self.type]]; + [output appendFormat:@"%@%@: %@\n", indent, @"type", NSStringFromPBFieldDescriptorProtoType(self.type)]; } if (self.hasTypeName) { [output appendFormat:@"%@%@: %@\n", indent, @"typeName", self.typeName]; @@ -2329,6 +2329,49 @@ BOOL PBFieldDescriptorProtoTypeIsValidValue(PBFieldDescriptorProtoType value) { return NO; } } +NSString *NSStringFromPBFieldDescriptorProtoType(PBFieldDescriptorProtoType value) { + switch (value) { + case PBFieldDescriptorProtoTypeTypeDouble: + return @"PBFieldDescriptorProtoTypeTypeDouble"; + case PBFieldDescriptorProtoTypeTypeFloat: + return @"PBFieldDescriptorProtoTypeTypeFloat"; + case PBFieldDescriptorProtoTypeTypeInt64: + return @"PBFieldDescriptorProtoTypeTypeInt64"; + case PBFieldDescriptorProtoTypeTypeUint64: + return @"PBFieldDescriptorProtoTypeTypeUint64"; + case PBFieldDescriptorProtoTypeTypeInt32: + return @"PBFieldDescriptorProtoTypeTypeInt32"; + case PBFieldDescriptorProtoTypeTypeFixed64: + return @"PBFieldDescriptorProtoTypeTypeFixed64"; + case PBFieldDescriptorProtoTypeTypeFixed32: + return @"PBFieldDescriptorProtoTypeTypeFixed32"; + case PBFieldDescriptorProtoTypeTypeBool: + return @"PBFieldDescriptorProtoTypeTypeBool"; + case PBFieldDescriptorProtoTypeTypeString: + return @"PBFieldDescriptorProtoTypeTypeString"; + case PBFieldDescriptorProtoTypeTypeGroup: + return @"PBFieldDescriptorProtoTypeTypeGroup"; + case PBFieldDescriptorProtoTypeTypeMessage: + return @"PBFieldDescriptorProtoTypeTypeMessage"; + case PBFieldDescriptorProtoTypeTypeBytes: + return @"PBFieldDescriptorProtoTypeTypeBytes"; + case PBFieldDescriptorProtoTypeTypeUint32: + return @"PBFieldDescriptorProtoTypeTypeUint32"; + case PBFieldDescriptorProtoTypeTypeEnum: + return @"PBFieldDescriptorProtoTypeTypeEnum"; + case PBFieldDescriptorProtoTypeTypeSfixed32: + return @"PBFieldDescriptorProtoTypeTypeSfixed32"; + case PBFieldDescriptorProtoTypeTypeSfixed64: + return @"PBFieldDescriptorProtoTypeTypeSfixed64"; + case PBFieldDescriptorProtoTypeTypeSint32: + return @"PBFieldDescriptorProtoTypeTypeSint32"; + case PBFieldDescriptorProtoTypeTypeSint64: + return @"PBFieldDescriptorProtoTypeTypeSint64"; + default: + return nil; + } +} + BOOL PBFieldDescriptorProtoLabelIsValidValue(PBFieldDescriptorProtoLabel value) { switch (value) { case PBFieldDescriptorProtoLabelLabelOptional: @@ -2339,6 +2382,19 @@ BOOL PBFieldDescriptorProtoLabelIsValidValue(PBFieldDescriptorProtoLabel value) return NO; } } +NSString *NSStringFromPBFieldDescriptorProtoLabel(PBFieldDescriptorProtoLabel value) { + switch (value) { + case PBFieldDescriptorProtoLabelLabelOptional: + return @"PBFieldDescriptorProtoLabelLabelOptional"; + case PBFieldDescriptorProtoLabelLabelRequired: + return @"PBFieldDescriptorProtoLabelLabelRequired"; + case PBFieldDescriptorProtoLabelLabelRepeated: + return @"PBFieldDescriptorProtoLabelLabelRepeated"; + default: + return nil; + } +} + @interface PBFieldDescriptorProtoBuilder() @property (strong) PBFieldDescriptorProto* resultFieldDescriptorProto; @end @@ -4510,7 +4566,7 @@ - (void) writeDescriptionTo:(NSMutableString*) output withIndent:(NSString*) ind [output appendFormat:@"%@%@: %@\n", indent, @"javaOuterClassname", self.javaOuterClassname]; } if (self.hasOptimizeFor) { - [output appendFormat:@"%@%@: %@\n", indent, @"optimizeFor", [NSNumber numberWithInteger:self.optimizeFor]]; + [output appendFormat:@"%@%@: %@\n", indent, @"optimizeFor", NSStringFromPBFileOptionsOptimizeMode(self.optimizeFor)]; } if (self.hasJavaMultipleFiles) { [output appendFormat:@"%@%@: %@\n", indent, @"javaMultipleFiles", [NSNumber numberWithBool:self.javaMultipleFiles]]; @@ -4638,6 +4694,19 @@ BOOL PBFileOptionsOptimizeModeIsValidValue(PBFileOptionsOptimizeMode value) { return NO; } } +NSString *NSStringFromPBFileOptionsOptimizeMode(PBFileOptionsOptimizeMode value) { + switch (value) { + case PBFileOptionsOptimizeModeSpeed: + return @"PBFileOptionsOptimizeModeSpeed"; + case PBFileOptionsOptimizeModeCodeSize: + return @"PBFileOptionsOptimizeModeCodeSize"; + case PBFileOptionsOptimizeModeLiteRuntime: + return @"PBFileOptionsOptimizeModeLiteRuntime"; + default: + return nil; + } +} + @interface PBFileOptionsBuilder() @property (strong) PBFileOptions* resultFileOptions; @end @@ -5595,7 +5664,7 @@ - (PBFieldOptionsBuilder*) toBuilder { } - (void) writeDescriptionTo:(NSMutableString*) output withIndent:(NSString*) indent { if (self.hasCtype) { - [output appendFormat:@"%@%@: %@\n", indent, @"ctype", [NSNumber numberWithInteger:self.ctype]]; + [output appendFormat:@"%@%@: %@\n", indent, @"ctype", NSStringFromPBFieldOptionsCType(self.ctype)]; } if (self.hasPacked) { [output appendFormat:@"%@%@: %@\n", indent, @"packed", [NSNumber numberWithBool:self.packed]]; @@ -5689,6 +5758,19 @@ BOOL PBFieldOptionsCTypeIsValidValue(PBFieldOptionsCType value) { return NO; } } +NSString *NSStringFromPBFieldOptionsCType(PBFieldOptionsCType value) { + switch (value) { + case PBFieldOptionsCTypeString: + return @"PBFieldOptionsCTypeString"; + case PBFieldOptionsCTypeCord: + return @"PBFieldOptionsCTypeCord"; + case PBFieldOptionsCTypeStringPiece: + return @"PBFieldOptionsCTypeStringPiece"; + default: + return nil; + } +} + @interface PBFieldOptionsBuilder() @property (strong) PBFieldOptions* resultFieldOptions; @end diff --git a/src/runtime/Classes/GeneratedMessage.h b/src/runtime/Classes/GeneratedMessage.h index c94a265..e838e9c 100644 --- a/src/runtime/Classes/GeneratedMessage.h +++ b/src/runtime/Classes/GeneratedMessage.h @@ -25,6 +25,17 @@ * * @author Cyrus Najmabadi */ +@class PBExtensionRegistry; +@class PBCodedInputStream; +@protocol GeneratedMessageProtocol ++ (id) parseFromData:(NSData*) data; ++ (id) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*)extensionRegistry; ++ (id) parseFromInputStream:(NSInputStream*) input; ++ (id) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; ++ (id) parseFromCodedInputStream:(PBCodedInputStream*) input; ++ (id) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; +@end + @interface PBGeneratedMessage : PBAbstractMessage { @private PBUnknownFieldSet* unknownFields; diff --git a/src/runtime/ProtocolBuffers.xcodeproj/project.xcworkspace/xcuserdata/alexeyxo.xcuserdatad/UserInterfaceState.xcuserstate b/src/runtime/ProtocolBuffers.xcodeproj/project.xcworkspace/xcuserdata/alexeyxo.xcuserdatad/UserInterfaceState.xcuserstate index ff1b05381f9c03109bda60f612a74c0bace21741..1fc2fd59eff87d1a66a36c33b5ccbb84c64ca94a 100644 GIT binary patch literal 112924 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 pVuYDTq~bS5WMDTVcCnws!T}s+0f# literal 111590 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 unpackedEnumExtension; @end -@interface TestAllTypes : PBGeneratedMessage { +@interface TestAllTypes : PBGeneratedMessage { @private BOOL hasOptionalBool_:1; BOOL hasDefaultBool_:1; @@ -623,7 +629,7 @@ BOOL TestDynamicExtensionsDynamicEnumTypeIsValidValue(TestDynamicExtensionsDynam + (TestAllTypes*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; @end -@interface TestAllTypesNestedMessage : PBGeneratedMessage { +@interface TestAllTypesNestedMessage : PBGeneratedMessage { @private BOOL hasBb_:1; SInt32 bb; @@ -672,7 +678,7 @@ BOOL TestDynamicExtensionsDynamicEnumTypeIsValidValue(TestDynamicExtensionsDynam - (TestAllTypesNestedMessageBuilder*) clearBb; @end -@interface TestAllTypesOptionalGroup : PBGeneratedMessage { +@interface TestAllTypesOptionalGroup : PBGeneratedMessage { @private BOOL hasA_:1; SInt32 a; @@ -721,7 +727,7 @@ BOOL TestDynamicExtensionsDynamicEnumTypeIsValidValue(TestDynamicExtensionsDynam - (TestAllTypesOptionalGroupBuilder*) clearA; @end -@interface TestAllTypesRepeatedGroup : PBGeneratedMessage { +@interface TestAllTypesRepeatedGroup : PBGeneratedMessage { @private BOOL hasA_:1; SInt32 a; @@ -1218,7 +1224,7 @@ BOOL TestDynamicExtensionsDynamicEnumTypeIsValidValue(TestDynamicExtensionsDynam - (TestAllTypesBuilder*) clearOneofBytes; @end -@interface NestedTestAllTypes : PBGeneratedMessage { +@interface NestedTestAllTypes : PBGeneratedMessage { @private BOOL hasChild_:1; BOOL hasPayload_:1; @@ -1280,7 +1286,7 @@ BOOL TestDynamicExtensionsDynamicEnumTypeIsValidValue(TestDynamicExtensionsDynam - (NestedTestAllTypesBuilder*) clearPayload; @end -@interface TestDeprecatedFields : PBGeneratedMessage { +@interface TestDeprecatedFields : PBGeneratedMessage { @private BOOL hasDeprecatedInt32_:1; SInt32 deprecatedInt32; @@ -1329,7 +1335,7 @@ BOOL TestDynamicExtensionsDynamicEnumTypeIsValidValue(TestDynamicExtensionsDynam - (TestDeprecatedFieldsBuilder*) clearDeprecatedInt32; @end -@interface ForeignMessage : PBGeneratedMessage { +@interface ForeignMessage : PBGeneratedMessage { @private BOOL hasC_:1; SInt32 c; @@ -1378,7 +1384,7 @@ BOOL TestDynamicExtensionsDynamicEnumTypeIsValidValue(TestDynamicExtensionsDynam - (ForeignMessageBuilder*) clearC; @end -@interface TestAllExtensions : PBExtendableMessage { +@interface TestAllExtensions : PBExtendableMessage { @private } @@ -1418,7 +1424,7 @@ BOOL TestDynamicExtensionsDynamicEnumTypeIsValidValue(TestDynamicExtensionsDynam - (TestAllExtensionsBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; @end -@interface OptionalGroup_extension : PBGeneratedMessage { +@interface OptionalGroup_extension : PBGeneratedMessage { @private BOOL hasA_:1; SInt32 a; @@ -1467,7 +1473,7 @@ BOOL TestDynamicExtensionsDynamicEnumTypeIsValidValue(TestDynamicExtensionsDynam - (OptionalGroup_extensionBuilder*) clearA; @end -@interface RepeatedGroup_extension : PBGeneratedMessage { +@interface RepeatedGroup_extension : PBGeneratedMessage { @private BOOL hasA_:1; SInt32 a; @@ -1516,7 +1522,7 @@ BOOL TestDynamicExtensionsDynamicEnumTypeIsValidValue(TestDynamicExtensionsDynam - (RepeatedGroup_extensionBuilder*) clearA; @end -@interface TestNestedExtension : PBGeneratedMessage { +@interface TestNestedExtension : PBGeneratedMessage { @private } @@ -1558,7 +1564,7 @@ BOOL TestDynamicExtensionsDynamicEnumTypeIsValidValue(TestDynamicExtensionsDynam - (TestNestedExtensionBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; @end -@interface TestRequired : PBGeneratedMessage { +@interface TestRequired : PBGeneratedMessage { @private BOOL hasA_:1; BOOL hasDummy2_:1; @@ -1897,7 +1903,7 @@ BOOL TestDynamicExtensionsDynamicEnumTypeIsValidValue(TestDynamicExtensionsDynam - (TestRequiredBuilder*) clearC; @end -@interface TestRequiredForeign : PBGeneratedMessage { +@interface TestRequiredForeign : PBGeneratedMessage { @private BOOL hasDummy_:1; BOOL hasOptionalMessage_:1; @@ -1966,7 +1972,7 @@ BOOL TestDynamicExtensionsDynamicEnumTypeIsValidValue(TestDynamicExtensionsDynam - (TestRequiredForeignBuilder*) clearDummy; @end -@interface TestForeignNested : PBGeneratedMessage { +@interface TestForeignNested : PBGeneratedMessage { @private BOOL hasForeignNested_:1; TestAllTypesNestedMessage* foreignNested; @@ -2017,7 +2023,7 @@ BOOL TestDynamicExtensionsDynamicEnumTypeIsValidValue(TestDynamicExtensionsDynam - (TestForeignNestedBuilder*) clearForeignNested; @end -@interface TestEmptyMessage : PBGeneratedMessage { +@interface TestEmptyMessage : PBGeneratedMessage { @private } @@ -2057,7 +2063,7 @@ BOOL TestDynamicExtensionsDynamicEnumTypeIsValidValue(TestDynamicExtensionsDynam - (TestEmptyMessageBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; @end -@interface TestEmptyMessageWithExtensions : PBExtendableMessage { +@interface TestEmptyMessageWithExtensions : PBExtendableMessage { @private } @@ -2097,7 +2103,7 @@ BOOL TestDynamicExtensionsDynamicEnumTypeIsValidValue(TestDynamicExtensionsDynam - (TestEmptyMessageWithExtensionsBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; @end -@interface TestMultipleExtensionRanges : PBExtendableMessage { +@interface TestMultipleExtensionRanges : PBExtendableMessage { @private } @@ -2137,7 +2143,7 @@ BOOL TestDynamicExtensionsDynamicEnumTypeIsValidValue(TestDynamicExtensionsDynam - (TestMultipleExtensionRangesBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; @end -@interface TestReallyLargeTagNumber : PBGeneratedMessage { +@interface TestReallyLargeTagNumber : PBGeneratedMessage { @private BOOL hasA_:1; BOOL hasBb_:1; @@ -2195,7 +2201,7 @@ BOOL TestDynamicExtensionsDynamicEnumTypeIsValidValue(TestDynamicExtensionsDynam - (TestReallyLargeTagNumberBuilder*) clearBb; @end -@interface TestRecursiveMessage : PBGeneratedMessage { +@interface TestRecursiveMessage : PBGeneratedMessage { @private BOOL hasI_:1; BOOL hasA_:1; @@ -2255,7 +2261,7 @@ BOOL TestDynamicExtensionsDynamicEnumTypeIsValidValue(TestDynamicExtensionsDynam - (TestRecursiveMessageBuilder*) clearI; @end -@interface TestMutualRecursionA : PBGeneratedMessage { +@interface TestMutualRecursionA : PBGeneratedMessage { @private BOOL hasBb_:1; TestMutualRecursionB* bb; @@ -2306,7 +2312,7 @@ BOOL TestDynamicExtensionsDynamicEnumTypeIsValidValue(TestDynamicExtensionsDynam - (TestMutualRecursionABuilder*) clearBb; @end -@interface TestMutualRecursionB : PBGeneratedMessage { +@interface TestMutualRecursionB : PBGeneratedMessage { @private BOOL hasOptionalInt32_:1; BOOL hasA_:1; @@ -2366,7 +2372,7 @@ BOOL TestDynamicExtensionsDynamicEnumTypeIsValidValue(TestDynamicExtensionsDynam - (TestMutualRecursionBBuilder*) clearOptionalInt32; @end -@interface TestDupFieldNumber : PBGeneratedMessage { +@interface TestDupFieldNumber : PBGeneratedMessage { @private BOOL hasA_:1; BOOL hasFoo_:1; @@ -2400,7 +2406,7 @@ BOOL TestDynamicExtensionsDynamicEnumTypeIsValidValue(TestDynamicExtensionsDynam + (TestDupFieldNumber*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; @end -@interface TestDupFieldNumberFoo : PBGeneratedMessage { +@interface TestDupFieldNumberFoo : PBGeneratedMessage { @private BOOL hasA_:1; SInt32 a; @@ -2449,7 +2455,7 @@ BOOL TestDynamicExtensionsDynamicEnumTypeIsValidValue(TestDynamicExtensionsDynam - (TestDupFieldNumberFooBuilder*) clearA; @end -@interface TestDupFieldNumberBar : PBGeneratedMessage { +@interface TestDupFieldNumberBar : PBGeneratedMessage { @private BOOL hasA_:1; SInt32 a; @@ -2535,7 +2541,7 @@ BOOL TestDynamicExtensionsDynamicEnumTypeIsValidValue(TestDynamicExtensionsDynam - (TestDupFieldNumberBuilder*) clearBar; @end -@interface TestEagerMessage : PBGeneratedMessage { +@interface TestEagerMessage : PBGeneratedMessage { @private BOOL hasSubMessage_:1; TestAllTypes* subMessage; @@ -2586,7 +2592,7 @@ BOOL TestDynamicExtensionsDynamicEnumTypeIsValidValue(TestDynamicExtensionsDynam - (TestEagerMessageBuilder*) clearSubMessage; @end -@interface TestLazyMessage : PBGeneratedMessage { +@interface TestLazyMessage : PBGeneratedMessage { @private BOOL hasSubMessage_:1; TestAllTypes* subMessage; @@ -2637,7 +2643,7 @@ BOOL TestDynamicExtensionsDynamicEnumTypeIsValidValue(TestDynamicExtensionsDynam - (TestLazyMessageBuilder*) clearSubMessage; @end -@interface TestNestedMessageHasBits : PBGeneratedMessage { +@interface TestNestedMessageHasBits : PBGeneratedMessage { @private BOOL hasOptionalNestedMessage_:1; TestNestedMessageHasBitsNestedMessage* optionalNestedMessage; @@ -2663,7 +2669,7 @@ BOOL TestDynamicExtensionsDynamicEnumTypeIsValidValue(TestDynamicExtensionsDynam + (TestNestedMessageHasBits*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; @end -@interface TestNestedMessageHasBitsNestedMessage : PBGeneratedMessage { +@interface TestNestedMessageHasBitsNestedMessage : PBGeneratedMessage { @private PBAppendableArray * nestedmessageRepeatedInt32Array; NSMutableArray * nestedmessageRepeatedForeignmessageArray; @@ -2747,7 +2753,7 @@ BOOL TestDynamicExtensionsDynamicEnumTypeIsValidValue(TestDynamicExtensionsDynam - (TestNestedMessageHasBitsBuilder*) clearOptionalNestedMessage; @end -@interface TestCamelCaseFieldNames : PBGeneratedMessage { +@interface TestCamelCaseFieldNames : PBGeneratedMessage { @private BOOL hasPrimitiveField_:1; BOOL hasStringField_:1; @@ -2899,7 +2905,7 @@ BOOL TestDynamicExtensionsDynamicEnumTypeIsValidValue(TestDynamicExtensionsDynam - (TestCamelCaseFieldNamesBuilder *)clearRepeatedCordField; @end -@interface TestFieldOrderings : PBExtendableMessage { +@interface TestFieldOrderings : PBExtendableMessage { @private BOOL hasMyFloat_:1; BOOL hasMyInt_:1; @@ -2966,7 +2972,7 @@ BOOL TestDynamicExtensionsDynamicEnumTypeIsValidValue(TestDynamicExtensionsDynam - (TestFieldOrderingsBuilder*) clearMyFloat; @end -@interface TestExtremeDefaultValues : PBGeneratedMessage { +@interface TestExtremeDefaultValues : PBGeneratedMessage { @private BOOL hasInfDouble_:1; BOOL hasNegInfDouble_:1; @@ -3249,7 +3255,7 @@ BOOL TestDynamicExtensionsDynamicEnumTypeIsValidValue(TestDynamicExtensionsDynam - (TestExtremeDefaultValuesBuilder*) clearReplacementString; @end -@interface SparseEnumMessage : PBGeneratedMessage { +@interface SparseEnumMessage : PBGeneratedMessage { @private BOOL hasSparseEnum_:1; TestSparseEnum sparseEnum; @@ -3298,7 +3304,7 @@ BOOL TestDynamicExtensionsDynamicEnumTypeIsValidValue(TestDynamicExtensionsDynam - (SparseEnumMessageBuilder*) clearSparseEnum; @end -@interface OneString : PBGeneratedMessage { +@interface OneString : PBGeneratedMessage { @private BOOL hasData_:1; NSString* data; @@ -3347,7 +3353,7 @@ BOOL TestDynamicExtensionsDynamicEnumTypeIsValidValue(TestDynamicExtensionsDynam - (OneStringBuilder*) clearData; @end -@interface MoreString : PBGeneratedMessage { +@interface MoreString : PBGeneratedMessage { @private NSMutableArray * dataArray; } @@ -3396,7 +3402,7 @@ BOOL TestDynamicExtensionsDynamicEnumTypeIsValidValue(TestDynamicExtensionsDynam - (MoreStringBuilder *)clearData; @end -@interface OneBytes : PBGeneratedMessage { +@interface OneBytes : PBGeneratedMessage { @private BOOL hasData_:1; NSData* data; @@ -3445,7 +3451,7 @@ BOOL TestDynamicExtensionsDynamicEnumTypeIsValidValue(TestDynamicExtensionsDynam - (OneBytesBuilder*) clearData; @end -@interface MoreBytes : PBGeneratedMessage { +@interface MoreBytes : PBGeneratedMessage { @private NSMutableArray * dataArray; } @@ -3494,7 +3500,7 @@ BOOL TestDynamicExtensionsDynamicEnumTypeIsValidValue(TestDynamicExtensionsDynam - (MoreBytesBuilder *)clearData; @end -@interface Int32Message : PBGeneratedMessage { +@interface Int32Message : PBGeneratedMessage { @private BOOL hasData_:1; SInt32 data; @@ -3543,7 +3549,7 @@ BOOL TestDynamicExtensionsDynamicEnumTypeIsValidValue(TestDynamicExtensionsDynam - (Int32MessageBuilder*) clearData; @end -@interface Uint32Message : PBGeneratedMessage { +@interface Uint32Message : PBGeneratedMessage { @private BOOL hasData_:1; UInt32 data; @@ -3592,7 +3598,7 @@ BOOL TestDynamicExtensionsDynamicEnumTypeIsValidValue(TestDynamicExtensionsDynam - (Uint32MessageBuilder*) clearData; @end -@interface Int64Message : PBGeneratedMessage { +@interface Int64Message : PBGeneratedMessage { @private BOOL hasData_:1; SInt64 data; @@ -3641,7 +3647,7 @@ BOOL TestDynamicExtensionsDynamicEnumTypeIsValidValue(TestDynamicExtensionsDynam - (Int64MessageBuilder*) clearData; @end -@interface Uint64Message : PBGeneratedMessage { +@interface Uint64Message : PBGeneratedMessage { @private BOOL hasData_:1; UInt64 data; @@ -3690,7 +3696,7 @@ BOOL TestDynamicExtensionsDynamicEnumTypeIsValidValue(TestDynamicExtensionsDynam - (Uint64MessageBuilder*) clearData; @end -@interface BoolMessage : PBGeneratedMessage { +@interface BoolMessage : PBGeneratedMessage { @private BOOL hasData_:1; BOOL data_:1; @@ -3739,7 +3745,7 @@ BOOL TestDynamicExtensionsDynamicEnumTypeIsValidValue(TestDynamicExtensionsDynam - (BoolMessageBuilder*) clearData; @end -@interface TestOneof : PBGeneratedMessage { +@interface TestOneof : PBGeneratedMessage { @private BOOL hasFooInt_:1; BOOL hasFooString_:1; @@ -3777,7 +3783,7 @@ BOOL TestDynamicExtensionsDynamicEnumTypeIsValidValue(TestDynamicExtensionsDynam + (TestOneof*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; @end -@interface TestOneofFooGroup : PBGeneratedMessage { +@interface TestOneofFooGroup : PBGeneratedMessage { @private BOOL hasA_:1; BOOL hasB_:1; @@ -3877,7 +3883,7 @@ BOOL TestDynamicExtensionsDynamicEnumTypeIsValidValue(TestDynamicExtensionsDynam - (TestOneofBuilder*) clearFooGroup; @end -@interface TestOneofBackwardsCompatible : PBGeneratedMessage { +@interface TestOneofBackwardsCompatible : PBGeneratedMessage { @private BOOL hasFooInt_:1; BOOL hasFooString_:1; @@ -3915,7 +3921,7 @@ BOOL TestDynamicExtensionsDynamicEnumTypeIsValidValue(TestDynamicExtensionsDynam + (TestOneofBackwardsCompatible*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; @end -@interface TestOneofBackwardsCompatibleFooGroup : PBGeneratedMessage { +@interface TestOneofBackwardsCompatibleFooGroup : PBGeneratedMessage { @private BOOL hasA_:1; BOOL hasB_:1; @@ -4015,7 +4021,7 @@ BOOL TestDynamicExtensionsDynamicEnumTypeIsValidValue(TestDynamicExtensionsDynam - (TestOneofBackwardsCompatibleBuilder*) clearFooGroup; @end -@interface TestOneof2 : PBGeneratedMessage { +@interface TestOneof2 : PBGeneratedMessage { @private BOOL hasFooInt_:1; BOOL hasBarInt_:1; @@ -4105,7 +4111,7 @@ BOOL TestDynamicExtensionsDynamicEnumTypeIsValidValue(TestDynamicExtensionsDynam + (TestOneof2*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; @end -@interface TestOneof2FooGroup : PBGeneratedMessage { +@interface TestOneof2FooGroup : PBGeneratedMessage { @private BOOL hasA_:1; BOOL hasB_:1; @@ -4163,7 +4169,7 @@ BOOL TestDynamicExtensionsDynamicEnumTypeIsValidValue(TestDynamicExtensionsDynam - (TestOneof2FooGroupBuilder*) clearB; @end -@interface TestOneof2NestedMessage : PBGeneratedMessage { +@interface TestOneof2NestedMessage : PBGeneratedMessage { @private BOOL hasQuxInt_:1; SInt64 quxInt; @@ -4331,7 +4337,7 @@ BOOL TestDynamicExtensionsDynamicEnumTypeIsValidValue(TestDynamicExtensionsDynam - (TestOneof2Builder*) clearBazString; @end -@interface TestRequiredOneof : PBGeneratedMessage { +@interface TestRequiredOneof : PBGeneratedMessage { @private BOOL hasFooInt_:1; BOOL hasFooString_:1; @@ -4365,7 +4371,7 @@ BOOL TestDynamicExtensionsDynamicEnumTypeIsValidValue(TestDynamicExtensionsDynam + (TestRequiredOneof*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; @end -@interface TestRequiredOneofNestedMessage : PBGeneratedMessage { +@interface TestRequiredOneofNestedMessage : PBGeneratedMessage { @private BOOL hasRequiredDouble_:1; Float64 requiredDouble; @@ -4449,7 +4455,7 @@ BOOL TestDynamicExtensionsDynamicEnumTypeIsValidValue(TestDynamicExtensionsDynam - (TestRequiredOneofBuilder*) clearFooMessage; @end -@interface TestPackedTypes : PBGeneratedMessage { +@interface TestPackedTypes : PBGeneratedMessage { @private PBAppendableArray * packedBoolArray; SInt32 packedBoolMemoizedSerializedSize; @@ -4643,7 +4649,7 @@ BOOL TestDynamicExtensionsDynamicEnumTypeIsValidValue(TestDynamicExtensionsDynam - (TestPackedTypesBuilder *)clearPackedEnum; @end -@interface TestUnpackedTypes : PBGeneratedMessage { +@interface TestUnpackedTypes : PBGeneratedMessage { @private PBAppendableArray * unpackedBoolArray; PBAppendableArray * unpackedDoubleArray; @@ -4823,7 +4829,7 @@ BOOL TestDynamicExtensionsDynamicEnumTypeIsValidValue(TestDynamicExtensionsDynam - (TestUnpackedTypesBuilder *)clearUnpackedEnum; @end -@interface TestPackedExtensions : PBExtendableMessage { +@interface TestPackedExtensions : PBExtendableMessage { @private } @@ -4863,7 +4869,7 @@ BOOL TestDynamicExtensionsDynamicEnumTypeIsValidValue(TestDynamicExtensionsDynam - (TestPackedExtensionsBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; @end -@interface TestUnpackedExtensions : PBExtendableMessage { +@interface TestUnpackedExtensions : PBExtendableMessage { @private } @@ -4903,7 +4909,7 @@ BOOL TestDynamicExtensionsDynamicEnumTypeIsValidValue(TestDynamicExtensionsDynam - (TestUnpackedExtensionsBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; @end -@interface TestDynamicExtensions : PBGeneratedMessage { +@interface TestDynamicExtensions : PBGeneratedMessage { @private BOOL hasScalarExtension_:1; BOOL hasMessageExtension_:1; @@ -4952,7 +4958,7 @@ BOOL TestDynamicExtensionsDynamicEnumTypeIsValidValue(TestDynamicExtensionsDynam + (TestDynamicExtensions*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; @end -@interface TestDynamicExtensionsDynamicMessageType : PBGeneratedMessage { +@interface TestDynamicExtensionsDynamicMessageType : PBGeneratedMessage { @private BOOL hasDynamicField_:1; SInt32 dynamicField; @@ -5061,7 +5067,7 @@ BOOL TestDynamicExtensionsDynamicEnumTypeIsValidValue(TestDynamicExtensionsDynam - (TestDynamicExtensionsBuilder *)clearPackedExtension; @end -@interface TestRepeatedScalarDifferentTagSizes : PBGeneratedMessage { +@interface TestRepeatedScalarDifferentTagSizes : PBGeneratedMessage { @private PBAppendableArray * repeatedFloatArray; PBAppendableArray * repeatedInt64Array; @@ -5161,7 +5167,7 @@ BOOL TestDynamicExtensionsDynamicEnumTypeIsValidValue(TestDynamicExtensionsDynam - (TestRepeatedScalarDifferentTagSizesBuilder *)clearRepeatedUint64; @end -@interface TestParsingMerge : PBExtendableMessage { +@interface TestParsingMerge : PBExtendableMessage { @private BOOL hasOptionalGroup_:1; BOOL hasRequiredAllTypes_:1; @@ -5203,7 +5209,7 @@ BOOL TestDynamicExtensionsDynamicEnumTypeIsValidValue(TestDynamicExtensionsDynam + (TestParsingMerge*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; @end -@interface TestParsingMergeRepeatedFieldsGenerator : PBGeneratedMessage { +@interface TestParsingMergeRepeatedFieldsGenerator : PBGeneratedMessage { @private NSMutableArray * group1Array; NSMutableArray * group2Array; @@ -5246,7 +5252,7 @@ BOOL TestDynamicExtensionsDynamicEnumTypeIsValidValue(TestDynamicExtensionsDynam + (TestParsingMergeRepeatedFieldsGenerator*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; @end -@interface TestParsingMergeRepeatedFieldsGeneratorGroup1 : PBGeneratedMessage { +@interface TestParsingMergeRepeatedFieldsGeneratorGroup1 : PBGeneratedMessage { @private BOOL hasField1_:1; TestAllTypes* field1; @@ -5297,7 +5303,7 @@ BOOL TestDynamicExtensionsDynamicEnumTypeIsValidValue(TestDynamicExtensionsDynam - (TestParsingMergeRepeatedFieldsGeneratorGroup1Builder*) clearField1; @end -@interface TestParsingMergeRepeatedFieldsGeneratorGroup2 : PBGeneratedMessage { +@interface TestParsingMergeRepeatedFieldsGeneratorGroup2 : PBGeneratedMessage { @private BOOL hasField1_:1; TestAllTypes* field1; @@ -5408,7 +5414,7 @@ BOOL TestDynamicExtensionsDynamicEnumTypeIsValidValue(TestDynamicExtensionsDynam - (TestParsingMergeRepeatedFieldsGeneratorBuilder *)clearExt2; @end -@interface TestParsingMergeOptionalGroup : PBGeneratedMessage { +@interface TestParsingMergeOptionalGroup : PBGeneratedMessage { @private BOOL hasOptionalGroupAllTypes_:1; TestAllTypes* optionalGroupAllTypes; @@ -5459,7 +5465,7 @@ BOOL TestDynamicExtensionsDynamicEnumTypeIsValidValue(TestDynamicExtensionsDynam - (TestParsingMergeOptionalGroupBuilder*) clearOptionalGroupAllTypes; @end -@interface TestParsingMergeRepeatedGroup : PBGeneratedMessage { +@interface TestParsingMergeRepeatedGroup : PBGeneratedMessage { @private BOOL hasRepeatedGroupAllTypes_:1; TestAllTypes* repeatedGroupAllTypes; @@ -5561,7 +5567,7 @@ BOOL TestDynamicExtensionsDynamicEnumTypeIsValidValue(TestDynamicExtensionsDynam - (TestParsingMergeBuilder *)clearRepeatedGroup; @end -@interface TestCommentInjectionMessage : PBGeneratedMessage { +@interface TestCommentInjectionMessage : PBGeneratedMessage { @private BOOL hasA_:1; NSString* a; @@ -5610,7 +5616,7 @@ BOOL TestDynamicExtensionsDynamicEnumTypeIsValidValue(TestDynamicExtensionsDynam - (TestCommentInjectionMessageBuilder*) clearA; @end -@interface FooRequest : PBGeneratedMessage { +@interface FooRequest : PBGeneratedMessage { @private } @@ -5650,7 +5656,7 @@ BOOL TestDynamicExtensionsDynamicEnumTypeIsValidValue(TestDynamicExtensionsDynam - (FooRequestBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; @end -@interface FooResponse : PBGeneratedMessage { +@interface FooResponse : PBGeneratedMessage { @private } @@ -5690,7 +5696,7 @@ BOOL TestDynamicExtensionsDynamicEnumTypeIsValidValue(TestDynamicExtensionsDynam - (FooResponseBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; @end -@interface FooClientMessage : PBGeneratedMessage { +@interface FooClientMessage : PBGeneratedMessage { @private } @@ -5730,7 +5736,7 @@ BOOL TestDynamicExtensionsDynamicEnumTypeIsValidValue(TestDynamicExtensionsDynam - (FooClientMessageBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; @end -@interface FooServerMessage : PBGeneratedMessage { +@interface FooServerMessage : PBGeneratedMessage { @private } @@ -5770,7 +5776,7 @@ BOOL TestDynamicExtensionsDynamicEnumTypeIsValidValue(TestDynamicExtensionsDynam - (FooServerMessageBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; @end -@interface BarRequest : PBGeneratedMessage { +@interface BarRequest : PBGeneratedMessage { @private } @@ -5810,7 +5816,7 @@ BOOL TestDynamicExtensionsDynamicEnumTypeIsValidValue(TestDynamicExtensionsDynam - (BarRequestBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; @end -@interface BarResponse : PBGeneratedMessage { +@interface BarResponse : PBGeneratedMessage { @private } diff --git a/src/runtime/Tests/Unittest.pb.m b/src/runtime/Tests/Unittest.pb.m index c76ab0b..62eb94e 100644 --- a/src/runtime/Tests/Unittest.pb.m +++ b/src/runtime/Tests/Unittest.pb.m @@ -1567,6 +1567,19 @@ BOOL ForeignEnumIsValidValue(ForeignEnum value) { return NO; } } +NSString *NSStringFromForeignEnum(ForeignEnum value) { + switch (value) { + case ForeignEnumForeignFoo: + return @"ForeignEnumForeignFoo"; + case ForeignEnumForeignBar: + return @"ForeignEnumForeignBar"; + case ForeignEnumForeignBaz: + return @"ForeignEnumForeignBaz"; + default: + return nil; + } +} + BOOL TestEnumWithDupValueIsValidValue(TestEnumWithDupValue value) { switch (value) { case TestEnumWithDupValueFoo1: @@ -1577,6 +1590,19 @@ BOOL TestEnumWithDupValueIsValidValue(TestEnumWithDupValue value) { return NO; } } +NSString *NSStringFromTestEnumWithDupValue(TestEnumWithDupValue value) { + switch (value) { + case TestEnumWithDupValueFoo1: + return @"TestEnumWithDupValueFoo1"; + case TestEnumWithDupValueBar1: + return @"TestEnumWithDupValueBar1"; + case TestEnumWithDupValueBaz: + return @"TestEnumWithDupValueBaz"; + default: + return nil; + } +} + BOOL TestSparseEnumIsValidValue(TestSparseEnum value) { switch (value) { case TestSparseEnumSparseA: @@ -1591,6 +1617,27 @@ BOOL TestSparseEnumIsValidValue(TestSparseEnum value) { return NO; } } +NSString *NSStringFromTestSparseEnum(TestSparseEnum value) { + switch (value) { + case TestSparseEnumSparseA: + return @"TestSparseEnumSparseA"; + case TestSparseEnumSparseB: + return @"TestSparseEnumSparseB"; + case TestSparseEnumSparseC: + return @"TestSparseEnumSparseC"; + case TestSparseEnumSparseD: + return @"TestSparseEnumSparseD"; + case TestSparseEnumSparseE: + return @"TestSparseEnumSparseE"; + case TestSparseEnumSparseF: + return @"TestSparseEnumSparseF"; + case TestSparseEnumSparseG: + return @"TestSparseEnumSparseG"; + default: + return nil; + } +} + @interface TestAllTypes () @property SInt32 optionalInt32; @property SInt64 optionalInt64; @@ -3039,13 +3086,13 @@ - (void) writeDescriptionTo:(NSMutableString*) output withIndent:(NSString*) ind [output appendFormat:@"%@}\n", indent]; } if (self.hasOptionalNestedEnum) { - [output appendFormat:@"%@%@: %@\n", indent, @"optionalNestedEnum", [NSNumber numberWithInteger:self.optionalNestedEnum]]; + [output appendFormat:@"%@%@: %@\n", indent, @"optionalNestedEnum", NSStringFromTestAllTypesNestedEnum(self.optionalNestedEnum)]; } if (self.hasOptionalForeignEnum) { - [output appendFormat:@"%@%@: %@\n", indent, @"optionalForeignEnum", [NSNumber numberWithInteger:self.optionalForeignEnum]]; + [output appendFormat:@"%@%@: %@\n", indent, @"optionalForeignEnum", NSStringFromForeignEnum(self.optionalForeignEnum)]; } if (self.hasOptionalImportEnum) { - [output appendFormat:@"%@%@: %@\n", indent, @"optionalImportEnum", [NSNumber numberWithInteger:self.optionalImportEnum]]; + [output appendFormat:@"%@%@: %@\n", indent, @"optionalImportEnum", NSStringFromImportEnum(self.optionalImportEnum)]; } if (self.hasOptionalStringPiece) { [output appendFormat:@"%@%@: %@\n", indent, @"optionalStringPiece", self.optionalStringPiece]; @@ -3135,13 +3182,13 @@ - (void) writeDescriptionTo:(NSMutableString*) output withIndent:(NSString*) ind [output appendFormat:@"%@}\n", indent]; }]; [self.repeatedNestedEnumArray enumerateObjectsUsingBlock:^(id element, NSUInteger idx, BOOL *stop) { - [output appendFormat:@"%@%@: %@\n", indent, @"repeatedNestedEnum", element]; + [output appendFormat:@"%@%@: %@\n", indent, @"repeatedNestedEnum", NSStringFromTestAllTypesNestedEnum([(NSNumber *)element intValue])]; }]; [self.repeatedForeignEnumArray enumerateObjectsUsingBlock:^(id element, NSUInteger idx, BOOL *stop) { - [output appendFormat:@"%@%@: %@\n", indent, @"repeatedForeignEnum", element]; + [output appendFormat:@"%@%@: %@\n", indent, @"repeatedForeignEnum", NSStringFromForeignEnum([(NSNumber *)element intValue])]; }]; [self.repeatedImportEnumArray enumerateObjectsUsingBlock:^(id element, NSUInteger idx, BOOL *stop) { - [output appendFormat:@"%@%@: %@\n", indent, @"repeatedImportEnum", element]; + [output appendFormat:@"%@%@: %@\n", indent, @"repeatedImportEnum", NSStringFromImportEnum([(NSNumber *)element intValue])]; }]; [self.repeatedStringPieceArray enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { [output appendFormat:@"%@%@: %@\n", indent, @"repeatedStringPiece", obj]; @@ -3201,13 +3248,13 @@ - (void) writeDescriptionTo:(NSMutableString*) output withIndent:(NSString*) ind [output appendFormat:@"%@%@: %@\n", indent, @"defaultBytes", self.defaultBytes]; } if (self.hasDefaultNestedEnum) { - [output appendFormat:@"%@%@: %@\n", indent, @"defaultNestedEnum", [NSNumber numberWithInteger:self.defaultNestedEnum]]; + [output appendFormat:@"%@%@: %@\n", indent, @"defaultNestedEnum", NSStringFromTestAllTypesNestedEnum(self.defaultNestedEnum)]; } if (self.hasDefaultForeignEnum) { - [output appendFormat:@"%@%@: %@\n", indent, @"defaultForeignEnum", [NSNumber numberWithInteger:self.defaultForeignEnum]]; + [output appendFormat:@"%@%@: %@\n", indent, @"defaultForeignEnum", NSStringFromForeignEnum(self.defaultForeignEnum)]; } if (self.hasDefaultImportEnum) { - [output appendFormat:@"%@%@: %@\n", indent, @"defaultImportEnum", [NSNumber numberWithInteger:self.defaultImportEnum]]; + [output appendFormat:@"%@%@: %@\n", indent, @"defaultImportEnum", NSStringFromImportEnum(self.defaultImportEnum)]; } if (self.hasDefaultStringPiece) { [output appendFormat:@"%@%@: %@\n", indent, @"defaultStringPiece", self.defaultStringPiece]; @@ -3611,6 +3658,21 @@ BOOL TestAllTypesNestedEnumIsValidValue(TestAllTypesNestedEnum value) { return NO; } } +NSString *NSStringFromTestAllTypesNestedEnum(TestAllTypesNestedEnum value) { + switch (value) { + case TestAllTypesNestedEnumFoo: + return @"TestAllTypesNestedEnumFoo"; + case TestAllTypesNestedEnumBar: + return @"TestAllTypesNestedEnumBar"; + case TestAllTypesNestedEnumBaz: + return @"TestAllTypesNestedEnumBaz"; + case TestAllTypesNestedEnumNeg: + return @"TestAllTypesNestedEnumNeg"; + default: + return nil; + } +} + @interface TestAllTypesNestedMessage () @property SInt32 bb; @end @@ -13640,7 +13702,7 @@ - (void) writeDescriptionTo:(NSMutableString*) output withIndent:(NSString*) ind [output appendFormat:@"%@%@: %@\n", indent, @"stringField", self.stringField]; } if (self.hasEnumField) { - [output appendFormat:@"%@%@: %@\n", indent, @"enumField", [NSNumber numberWithInteger:self.enumField]]; + [output appendFormat:@"%@%@: %@\n", indent, @"enumField", NSStringFromForeignEnum(self.enumField)]; } if (self.hasMessageField) { [output appendFormat:@"%@%@ {\n", indent, @"messageField"]; @@ -13661,7 +13723,7 @@ - (void) writeDescriptionTo:(NSMutableString*) output withIndent:(NSString*) ind [output appendFormat:@"%@%@: %@\n", indent, @"repeatedStringField", obj]; }]; [self.repeatedEnumFieldArray enumerateObjectsUsingBlock:^(id element, NSUInteger idx, BOOL *stop) { - [output appendFormat:@"%@%@: %@\n", indent, @"repeatedEnumField", element]; + [output appendFormat:@"%@%@: %@\n", indent, @"repeatedEnumField", NSStringFromForeignEnum([(NSNumber *)element intValue])]; }]; [self.repeatedMessageFieldArray enumerateObjectsUsingBlock:^(ForeignMessage *element, NSUInteger idx, BOOL *stop) { [output appendFormat:@"%@%@ {\n", indent, @"repeatedMessageField"]; @@ -15981,7 +16043,7 @@ - (SparseEnumMessageBuilder*) toBuilder { } - (void) writeDescriptionTo:(NSMutableString*) output withIndent:(NSString*) indent { if (self.hasSparseEnum) { - [output appendFormat:@"%@%@: %@\n", indent, @"sparseEnum", [NSNumber numberWithInteger:self.sparseEnum]]; + [output appendFormat:@"%@%@: %@\n", indent, @"sparseEnum", NSStringFromTestSparseEnum(self.sparseEnum)]; } [self.unknownFields writeDescriptionTo:output withIndent:indent]; } @@ -19530,7 +19592,7 @@ - (void) writeDescriptionTo:(NSMutableString*) output withIndent:(NSString*) ind [output appendFormat:@"%@%@: %@\n", indent, @"fooBytes", self.fooBytes]; } if (self.hasFooEnum) { - [output appendFormat:@"%@%@: %@\n", indent, @"fooEnum", [NSNumber numberWithInteger:self.fooEnum]]; + [output appendFormat:@"%@%@: %@\n", indent, @"fooEnum", NSStringFromTestOneof2NestedEnum(self.fooEnum)]; } if (self.hasFooMessage) { [output appendFormat:@"%@%@ {\n", indent, @"fooMessage"]; @@ -19566,7 +19628,7 @@ - (void) writeDescriptionTo:(NSMutableString*) output withIndent:(NSString*) ind [output appendFormat:@"%@%@: %@\n", indent, @"barBytes", self.barBytes]; } if (self.hasBarEnum) { - [output appendFormat:@"%@%@: %@\n", indent, @"barEnum", [NSNumber numberWithInteger:self.barEnum]]; + [output appendFormat:@"%@%@: %@\n", indent, @"barEnum", NSStringFromTestOneof2NestedEnum(self.barEnum)]; } if (self.hasBazInt) { [output appendFormat:@"%@%@: %@\n", indent, @"bazInt", [NSNumber numberWithInteger:self.bazInt]]; @@ -19689,6 +19751,19 @@ BOOL TestOneof2NestedEnumIsValidValue(TestOneof2NestedEnum value) { return NO; } } +NSString *NSStringFromTestOneof2NestedEnum(TestOneof2NestedEnum value) { + switch (value) { + case TestOneof2NestedEnumFoo: + return @"TestOneof2NestedEnumFoo"; + case TestOneof2NestedEnumBar: + return @"TestOneof2NestedEnumBar"; + case TestOneof2NestedEnumBaz: + return @"TestOneof2NestedEnumBaz"; + default: + return nil; + } +} + @interface TestOneof2FooGroup () @property SInt32 a; @property (strong) NSString* b; @@ -21785,7 +21860,7 @@ - (void) writeDescriptionTo:(NSMutableString*) output withIndent:(NSString*) ind [output appendFormat:@"%@%@: %@\n", indent, @"packedBool", obj]; }]; [self.packedEnumArray enumerateObjectsUsingBlock:^(id element, NSUInteger idx, BOOL *stop) { - [output appendFormat:@"%@%@: %@\n", indent, @"packedEnum", element]; + [output appendFormat:@"%@%@: %@\n", indent, @"packedEnum", NSStringFromForeignEnum([(NSNumber *)element intValue])]; }]; [self.unknownFields writeDescriptionTo:output withIndent:indent]; } @@ -22996,7 +23071,7 @@ - (void) writeDescriptionTo:(NSMutableString*) output withIndent:(NSString*) ind [output appendFormat:@"%@%@: %@\n", indent, @"unpackedBool", obj]; }]; [self.unpackedEnumArray enumerateObjectsUsingBlock:^(id element, NSUInteger idx, BOOL *stop) { - [output appendFormat:@"%@%@: %@\n", indent, @"unpackedEnum", element]; + [output appendFormat:@"%@%@: %@\n", indent, @"unpackedEnum", NSStringFromForeignEnum([(NSNumber *)element intValue])]; }]; [self.unknownFields writeDescriptionTo:output withIndent:indent]; } @@ -24187,10 +24262,10 @@ - (void) writeDescriptionTo:(NSMutableString*) output withIndent:(NSString*) ind [output appendFormat:@"%@%@: %@\n", indent, @"scalarExtension", [NSNumber numberWithInteger:self.scalarExtension]]; } if (self.hasEnumExtension) { - [output appendFormat:@"%@%@: %@\n", indent, @"enumExtension", [NSNumber numberWithInteger:self.enumExtension]]; + [output appendFormat:@"%@%@: %@\n", indent, @"enumExtension", NSStringFromForeignEnum(self.enumExtension)]; } if (self.hasDynamicEnumExtension) { - [output appendFormat:@"%@%@: %@\n", indent, @"dynamicEnumExtension", [NSNumber numberWithInteger:self.dynamicEnumExtension]]; + [output appendFormat:@"%@%@: %@\n", indent, @"dynamicEnumExtension", NSStringFromTestDynamicExtensionsDynamicEnumType(self.dynamicEnumExtension)]; } if (self.hasMessageExtension) { [output appendFormat:@"%@%@ {\n", indent, @"messageExtension"]; @@ -24273,6 +24348,19 @@ BOOL TestDynamicExtensionsDynamicEnumTypeIsValidValue(TestDynamicExtensionsDynam return NO; } } +NSString *NSStringFromTestDynamicExtensionsDynamicEnumType(TestDynamicExtensionsDynamicEnumType value) { + switch (value) { + case TestDynamicExtensionsDynamicEnumTypeDynamicFoo: + return @"TestDynamicExtensionsDynamicEnumTypeDynamicFoo"; + case TestDynamicExtensionsDynamicEnumTypeDynamicBar: + return @"TestDynamicExtensionsDynamicEnumTypeDynamicBar"; + case TestDynamicExtensionsDynamicEnumTypeDynamicBaz: + return @"TestDynamicExtensionsDynamicEnumTypeDynamicBaz"; + default: + return nil; + } +} + @interface TestDynamicExtensionsDynamicMessageType () @property SInt32 dynamicField; @end diff --git a/src/runtime/Tests/Unittest_custom_options.pb.h b/src/runtime/Tests/Unittest_custom_options.pb.h index 28c1fb1..d67722f 100644 --- a/src/runtime/Tests/Unittest_custom_options.pb.h +++ b/src/runtime/Tests/Unittest_custom_options.pb.h @@ -115,12 +115,14 @@ typedef NS_ENUM(SInt32, MethodOpt1) { }; BOOL MethodOpt1IsValidValue(MethodOpt1 value); +NSString *NSStringFromMethodOpt1(MethodOpt1 value); typedef NS_ENUM(SInt32, AggregateEnum) { AggregateEnumValue = 1, }; BOOL AggregateEnumIsValidValue(AggregateEnum value); +NSString *NSStringFromAggregateEnum(AggregateEnum value); typedef NS_ENUM(SInt32, TestMessageWithCustomOptionsAnEnum) { TestMessageWithCustomOptionsAnEnumAnenumVal1 = 1, @@ -128,6 +130,7 @@ typedef NS_ENUM(SInt32, TestMessageWithCustomOptionsAnEnum) { }; BOOL TestMessageWithCustomOptionsAnEnumIsValidValue(TestMessageWithCustomOptionsAnEnum value); +NSString *NSStringFromTestMessageWithCustomOptionsAnEnum(TestMessageWithCustomOptionsAnEnum value); typedef NS_ENUM(SInt32, DummyMessageContainingEnumTestEnumType) { DummyMessageContainingEnumTestEnumTypeTestOptionEnumType1 = 22, @@ -135,12 +138,14 @@ typedef NS_ENUM(SInt32, DummyMessageContainingEnumTestEnumType) { }; BOOL DummyMessageContainingEnumTestEnumTypeIsValidValue(DummyMessageContainingEnumTestEnumType value); +NSString *NSStringFromDummyMessageContainingEnumTestEnumType(DummyMessageContainingEnumTestEnumType value); typedef NS_ENUM(SInt32, NestedOptionTypeNestedEnum) { NestedOptionTypeNestedEnumNestedEnumValue = 1, }; BOOL NestedOptionTypeNestedEnumIsValidValue(NestedOptionTypeNestedEnum value); +NSString *NSStringFromNestedOptionTypeNestedEnum(NestedOptionTypeNestedEnum value); @interface UnittestCustomOptionsRoot : NSObject { @@ -189,7 +194,7 @@ BOOL NestedOptionTypeNestedEnumIsValidValue(NestedOptionTypeNestedEnum value); + (id) methodopt; @end -@interface TestMessageWithCustomOptions : PBGeneratedMessage { +@interface TestMessageWithCustomOptions : PBGeneratedMessage { @private BOOL hasField1_:1; NSString* field1; @@ -238,7 +243,7 @@ BOOL NestedOptionTypeNestedEnumIsValidValue(NestedOptionTypeNestedEnum value); - (TestMessageWithCustomOptionsBuilder*) clearField1; @end -@interface CustomOptionFooRequest : PBGeneratedMessage { +@interface CustomOptionFooRequest : PBGeneratedMessage { @private } @@ -278,7 +283,7 @@ BOOL NestedOptionTypeNestedEnumIsValidValue(NestedOptionTypeNestedEnum value); - (CustomOptionFooRequestBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; @end -@interface CustomOptionFooResponse : PBGeneratedMessage { +@interface CustomOptionFooResponse : PBGeneratedMessage { @private } @@ -318,7 +323,7 @@ BOOL NestedOptionTypeNestedEnumIsValidValue(NestedOptionTypeNestedEnum value); - (CustomOptionFooResponseBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; @end -@interface CustomOptionFooClientMessage : PBGeneratedMessage { +@interface CustomOptionFooClientMessage : PBGeneratedMessage { @private } @@ -358,7 +363,7 @@ BOOL NestedOptionTypeNestedEnumIsValidValue(NestedOptionTypeNestedEnum value); - (CustomOptionFooClientMessageBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; @end -@interface CustomOptionFooServerMessage : PBGeneratedMessage { +@interface CustomOptionFooServerMessage : PBGeneratedMessage { @private } @@ -398,7 +403,7 @@ BOOL NestedOptionTypeNestedEnumIsValidValue(NestedOptionTypeNestedEnum value); - (CustomOptionFooServerMessageBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; @end -@interface DummyMessageContainingEnum : PBGeneratedMessage { +@interface DummyMessageContainingEnum : PBGeneratedMessage { @private } @@ -438,7 +443,7 @@ BOOL NestedOptionTypeNestedEnumIsValidValue(NestedOptionTypeNestedEnum value); - (DummyMessageContainingEnumBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; @end -@interface DummyMessageInvalidAsOptionType : PBGeneratedMessage { +@interface DummyMessageInvalidAsOptionType : PBGeneratedMessage { @private } @@ -478,7 +483,7 @@ BOOL NestedOptionTypeNestedEnumIsValidValue(NestedOptionTypeNestedEnum value); - (DummyMessageInvalidAsOptionTypeBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; @end -@interface CustomOptionMinIntegerValues : PBGeneratedMessage { +@interface CustomOptionMinIntegerValues : PBGeneratedMessage { @private } @@ -518,7 +523,7 @@ BOOL NestedOptionTypeNestedEnumIsValidValue(NestedOptionTypeNestedEnum value); - (CustomOptionMinIntegerValuesBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; @end -@interface CustomOptionMaxIntegerValues : PBGeneratedMessage { +@interface CustomOptionMaxIntegerValues : PBGeneratedMessage { @private } @@ -558,7 +563,7 @@ BOOL NestedOptionTypeNestedEnumIsValidValue(NestedOptionTypeNestedEnum value); - (CustomOptionMaxIntegerValuesBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; @end -@interface CustomOptionOtherValues : PBGeneratedMessage { +@interface CustomOptionOtherValues : PBGeneratedMessage { @private } @@ -598,7 +603,7 @@ BOOL NestedOptionTypeNestedEnumIsValidValue(NestedOptionTypeNestedEnum value); - (CustomOptionOtherValuesBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; @end -@interface SettingRealsFromPositiveInts : PBGeneratedMessage { +@interface SettingRealsFromPositiveInts : PBGeneratedMessage { @private } @@ -638,7 +643,7 @@ BOOL NestedOptionTypeNestedEnumIsValidValue(NestedOptionTypeNestedEnum value); - (SettingRealsFromPositiveIntsBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; @end -@interface SettingRealsFromNegativeInts : PBGeneratedMessage { +@interface SettingRealsFromNegativeInts : PBGeneratedMessage { @private } @@ -678,7 +683,7 @@ BOOL NestedOptionTypeNestedEnumIsValidValue(NestedOptionTypeNestedEnum value); - (SettingRealsFromNegativeIntsBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; @end -@interface ComplexOptionType1 : PBExtendableMessage { +@interface ComplexOptionType1 : PBExtendableMessage { @private BOOL hasFoo_:1; BOOL hasFoo2_:1; @@ -755,7 +760,7 @@ BOOL NestedOptionTypeNestedEnumIsValidValue(NestedOptionTypeNestedEnum value); - (ComplexOptionType1Builder *)clearFoo4; @end -@interface ComplexOptionType2 : PBExtendableMessage { +@interface ComplexOptionType2 : PBExtendableMessage { @private BOOL hasBaz_:1; BOOL hasBar_:1; @@ -792,7 +797,7 @@ BOOL NestedOptionTypeNestedEnumIsValidValue(NestedOptionTypeNestedEnum value); + (ComplexOptionType2*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; @end -@interface ComplexOptionType2ComplexOptionType4 : PBGeneratedMessage { +@interface ComplexOptionType2ComplexOptionType4 : PBGeneratedMessage { @private BOOL hasWaldo_:1; SInt32 waldo; @@ -885,7 +890,7 @@ BOOL NestedOptionTypeNestedEnumIsValidValue(NestedOptionTypeNestedEnum value); - (ComplexOptionType2Builder *)clearBarney; @end -@interface ComplexOptionType3 : PBGeneratedMessage { +@interface ComplexOptionType3 : PBGeneratedMessage { @private BOOL hasQux_:1; BOOL hasComplexOptionType5_:1; @@ -915,7 +920,7 @@ BOOL NestedOptionTypeNestedEnumIsValidValue(NestedOptionTypeNestedEnum value); + (ComplexOptionType3*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; @end -@interface ComplexOptionType3ComplexOptionType5 : PBGeneratedMessage { +@interface ComplexOptionType3ComplexOptionType5 : PBGeneratedMessage { @private BOOL hasPlugh_:1; SInt32 plugh; @@ -994,7 +999,7 @@ BOOL NestedOptionTypeNestedEnumIsValidValue(NestedOptionTypeNestedEnum value); - (ComplexOptionType3Builder*) clearComplexOptionType5; @end -@interface ComplexOpt6 : PBGeneratedMessage { +@interface ComplexOpt6 : PBGeneratedMessage { @private BOOL hasXyzzy_:1; SInt32 xyzzy; @@ -1043,7 +1048,7 @@ BOOL NestedOptionTypeNestedEnumIsValidValue(NestedOptionTypeNestedEnum value); - (ComplexOpt6Builder*) clearXyzzy; @end -@interface VariousComplexOptions : PBGeneratedMessage { +@interface VariousComplexOptions : PBGeneratedMessage { @private } @@ -1083,7 +1088,7 @@ BOOL NestedOptionTypeNestedEnumIsValidValue(NestedOptionTypeNestedEnum value); - (VariousComplexOptionsBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; @end -@interface AggregateMessageSet : PBExtendableMessage { +@interface AggregateMessageSet : PBExtendableMessage { @private } @@ -1123,7 +1128,7 @@ BOOL NestedOptionTypeNestedEnumIsValidValue(NestedOptionTypeNestedEnum value); - (AggregateMessageSetBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; @end -@interface AggregateMessageSetElement : PBGeneratedMessage { +@interface AggregateMessageSetElement : PBGeneratedMessage { @private BOOL hasS_:1; NSString* s; @@ -1173,7 +1178,7 @@ BOOL NestedOptionTypeNestedEnumIsValidValue(NestedOptionTypeNestedEnum value); - (AggregateMessageSetElementBuilder*) clearS; @end -@interface Aggregate : PBGeneratedMessage { +@interface Aggregate : PBGeneratedMessage { @private BOOL hasI_:1; BOOL hasS_:1; @@ -1265,7 +1270,7 @@ BOOL NestedOptionTypeNestedEnumIsValidValue(NestedOptionTypeNestedEnum value); - (AggregateBuilder*) clearMset; @end -@interface AggregateMessage : PBGeneratedMessage { +@interface AggregateMessage : PBGeneratedMessage { @private BOOL hasFieldname_:1; SInt32 fieldname; @@ -1314,7 +1319,7 @@ BOOL NestedOptionTypeNestedEnumIsValidValue(NestedOptionTypeNestedEnum value); - (AggregateMessageBuilder*) clearFieldname; @end -@interface NestedOptionType : PBGeneratedMessage { +@interface NestedOptionType : PBGeneratedMessage { @private } @@ -1337,7 +1342,7 @@ BOOL NestedOptionTypeNestedEnumIsValidValue(NestedOptionTypeNestedEnum value); + (NestedOptionType*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; @end -@interface NestedOptionTypeNestedMessage : PBGeneratedMessage { +@interface NestedOptionTypeNestedMessage : PBGeneratedMessage { @private BOOL hasNestedField_:1; SInt32 nestedField; diff --git a/src/runtime/Tests/Unittest_custom_options.pb.m b/src/runtime/Tests/Unittest_custom_options.pb.m index 285353a..8364724 100644 --- a/src/runtime/Tests/Unittest_custom_options.pb.m +++ b/src/runtime/Tests/Unittest_custom_options.pb.m @@ -634,6 +634,17 @@ BOOL MethodOpt1IsValidValue(MethodOpt1 value) { return NO; } } +NSString *NSStringFromMethodOpt1(MethodOpt1 value) { + switch (value) { + case MethodOpt1Methodopt1Val1: + return @"MethodOpt1Methodopt1Val1"; + case MethodOpt1Methodopt1Val2: + return @"MethodOpt1Methodopt1Val2"; + default: + return nil; + } +} + BOOL AggregateEnumIsValidValue(AggregateEnum value) { switch (value) { case AggregateEnumValue: @@ -642,6 +653,15 @@ BOOL AggregateEnumIsValidValue(AggregateEnum value) { return NO; } } +NSString *NSStringFromAggregateEnum(AggregateEnum value) { + switch (value) { + case AggregateEnumValue: + return @"AggregateEnumValue"; + default: + return nil; + } +} + @interface TestMessageWithCustomOptions () @property (strong) NSString* field1; @end @@ -764,6 +784,17 @@ BOOL TestMessageWithCustomOptionsAnEnumIsValidValue(TestMessageWithCustomOptions return NO; } } +NSString *NSStringFromTestMessageWithCustomOptionsAnEnum(TestMessageWithCustomOptionsAnEnum value) { + switch (value) { + case TestMessageWithCustomOptionsAnEnumAnenumVal1: + return @"TestMessageWithCustomOptionsAnEnumAnenumVal1"; + case TestMessageWithCustomOptionsAnEnumAnenumVal2: + return @"TestMessageWithCustomOptionsAnEnumAnenumVal2"; + default: + return nil; + } +} + @interface TestMessageWithCustomOptionsBuilder() @property (strong) TestMessageWithCustomOptions* resultTestMessageWithCustomOptions; @end @@ -1566,6 +1597,17 @@ BOOL DummyMessageContainingEnumTestEnumTypeIsValidValue(DummyMessageContainingEn return NO; } } +NSString *NSStringFromDummyMessageContainingEnumTestEnumType(DummyMessageContainingEnumTestEnumType value) { + switch (value) { + case DummyMessageContainingEnumTestEnumTypeTestOptionEnumType1: + return @"DummyMessageContainingEnumTestEnumTypeTestOptionEnumType1"; + case DummyMessageContainingEnumTestEnumTypeTestOptionEnumType2: + return @"DummyMessageContainingEnumTestEnumTypeTestOptionEnumType2"; + default: + return nil; + } +} + @interface DummyMessageContainingEnumBuilder() @property (strong) DummyMessageContainingEnum* resultDummyMessageContainingEnum; @end @@ -5511,6 +5553,15 @@ BOOL NestedOptionTypeNestedEnumIsValidValue(NestedOptionTypeNestedEnum value) { return NO; } } +NSString *NSStringFromNestedOptionTypeNestedEnum(NestedOptionTypeNestedEnum value) { + switch (value) { + case NestedOptionTypeNestedEnumNestedEnumValue: + return @"NestedOptionTypeNestedEnumNestedEnumValue"; + default: + return nil; + } +} + @interface NestedOptionTypeNestedMessage () @property SInt32 nestedField; @end diff --git a/src/runtime/Tests/Unittest_embed_optimize_for.pb.h b/src/runtime/Tests/Unittest_embed_optimize_for.pb.h index 6a940d8..30301a9 100644 --- a/src/runtime/Tests/Unittest_embed_optimize_for.pb.h +++ b/src/runtime/Tests/Unittest_embed_optimize_for.pb.h @@ -176,7 +176,7 @@ + (void) registerAllExtensions:(PBMutableExtensionRegistry*) registry; @end -@interface TestEmbedOptimizedForSize : PBGeneratedMessage { +@interface TestEmbedOptimizedForSize : PBGeneratedMessage { @private BOOL hasOptionalMessage_:1; TestOptimizedForSize* optionalMessage; diff --git a/src/runtime/Tests/Unittest_enormous_descriptor.pb.h b/src/runtime/Tests/Unittest_enormous_descriptor.pb.h index 7872597..4939d0c 100644 --- a/src/runtime/Tests/Unittest_enormous_descriptor.pb.h +++ b/src/runtime/Tests/Unittest_enormous_descriptor.pb.h @@ -25,7 +25,7 @@ + (void) registerAllExtensions:(PBMutableExtensionRegistry*) registry; @end -@interface TestEnormousDescriptor : PBGeneratedMessage { +@interface TestEnormousDescriptor : PBGeneratedMessage { @private BOOL hasLongFieldNameIsLooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong1_:1; BOOL hasLongFieldNameIsLooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong2_:1; diff --git a/src/runtime/Tests/Unittest_import.pb.h b/src/runtime/Tests/Unittest_import.pb.h index 3890296..e48d4fd 100644 --- a/src/runtime/Tests/Unittest_import.pb.h +++ b/src/runtime/Tests/Unittest_import.pb.h @@ -28,6 +28,7 @@ typedef NS_ENUM(SInt32, ImportEnum) { }; BOOL ImportEnumIsValidValue(ImportEnum value); +NSString *NSStringFromImportEnum(ImportEnum value); @interface UnittestImportRoot : NSObject { @@ -36,7 +37,7 @@ BOOL ImportEnumIsValidValue(ImportEnum value); + (void) registerAllExtensions:(PBMutableExtensionRegistry*) registry; @end -@interface ImportMessage : PBGeneratedMessage { +@interface ImportMessage : PBGeneratedMessage { @private BOOL hasD_:1; SInt32 d; diff --git a/src/runtime/Tests/Unittest_import.pb.m b/src/runtime/Tests/Unittest_import.pb.m index 3e492ee..25cb8ba 100644 --- a/src/runtime/Tests/Unittest_import.pb.m +++ b/src/runtime/Tests/Unittest_import.pb.m @@ -31,6 +31,19 @@ BOOL ImportEnumIsValidValue(ImportEnum value) { return NO; } } +NSString *NSStringFromImportEnum(ImportEnum value) { + switch (value) { + case ImportEnumImportFoo: + return @"ImportEnumImportFoo"; + case ImportEnumImportBar: + return @"ImportEnumImportBar"; + case ImportEnumImportBaz: + return @"ImportEnumImportBaz"; + default: + return nil; + } +} + @interface ImportMessage () @property SInt32 d; @end diff --git a/src/runtime/Tests/Unittest_import_lite.pb.h b/src/runtime/Tests/Unittest_import_lite.pb.h index ff6638d..32f0d53 100644 --- a/src/runtime/Tests/Unittest_import_lite.pb.h +++ b/src/runtime/Tests/Unittest_import_lite.pb.h @@ -28,6 +28,7 @@ typedef NS_ENUM(SInt32, ImportEnumLite) { }; BOOL ImportEnumLiteIsValidValue(ImportEnumLite value); +NSString *NSStringFromImportEnumLite(ImportEnumLite value); @interface UnittestImportLiteRoot : NSObject { @@ -36,7 +37,7 @@ BOOL ImportEnumLiteIsValidValue(ImportEnumLite value); + (void) registerAllExtensions:(PBMutableExtensionRegistry*) registry; @end -@interface ImportMessageLite : PBGeneratedMessage { +@interface ImportMessageLite : PBGeneratedMessage { @private BOOL hasD_:1; SInt32 d; diff --git a/src/runtime/Tests/Unittest_import_lite.pb.m b/src/runtime/Tests/Unittest_import_lite.pb.m index aca56b9..0d4c158 100644 --- a/src/runtime/Tests/Unittest_import_lite.pb.m +++ b/src/runtime/Tests/Unittest_import_lite.pb.m @@ -31,6 +31,19 @@ BOOL ImportEnumLiteIsValidValue(ImportEnumLite value) { return NO; } } +NSString *NSStringFromImportEnumLite(ImportEnumLite value) { + switch (value) { + case ImportEnumLiteImportLiteFoo: + return @"ImportEnumLiteImportLiteFoo"; + case ImportEnumLiteImportLiteBar: + return @"ImportEnumLiteImportLiteBar"; + case ImportEnumLiteImportLiteBaz: + return @"ImportEnumLiteImportLiteBaz"; + default: + return nil; + } +} + @interface ImportMessageLite () @property SInt32 d; @end diff --git a/src/runtime/Tests/Unittest_import_public.pb.h b/src/runtime/Tests/Unittest_import_public.pb.h index a926fe0..128d0b9 100644 --- a/src/runtime/Tests/Unittest_import_public.pb.h +++ b/src/runtime/Tests/Unittest_import_public.pb.h @@ -25,7 +25,7 @@ + (void) registerAllExtensions:(PBMutableExtensionRegistry*) registry; @end -@interface PublicImportMessage : PBGeneratedMessage { +@interface PublicImportMessage : PBGeneratedMessage { @private BOOL hasE_:1; SInt32 e; diff --git a/src/runtime/Tests/Unittest_import_public_lite.pb.h b/src/runtime/Tests/Unittest_import_public_lite.pb.h index f604248..de9174f 100644 --- a/src/runtime/Tests/Unittest_import_public_lite.pb.h +++ b/src/runtime/Tests/Unittest_import_public_lite.pb.h @@ -25,7 +25,7 @@ + (void) registerAllExtensions:(PBMutableExtensionRegistry*) registry; @end -@interface PublicImportMessageLite : PBGeneratedMessage { +@interface PublicImportMessageLite : PBGeneratedMessage { @private BOOL hasE_:1; SInt32 e; diff --git a/src/runtime/Tests/Unittest_lite.pb.h b/src/runtime/Tests/Unittest_lite.pb.h index 0686499..5335db3 100644 --- a/src/runtime/Tests/Unittest_lite.pb.h +++ b/src/runtime/Tests/Unittest_lite.pb.h @@ -68,6 +68,7 @@ typedef NS_ENUM(SInt32, ForeignEnumLite) { }; BOOL ForeignEnumLiteIsValidValue(ForeignEnumLite value); +NSString *NSStringFromForeignEnumLite(ForeignEnumLite value); typedef NS_ENUM(SInt32, TestAllTypesLiteNestedEnum) { TestAllTypesLiteNestedEnumFoo = 1, @@ -76,6 +77,7 @@ typedef NS_ENUM(SInt32, TestAllTypesLiteNestedEnum) { }; BOOL TestAllTypesLiteNestedEnumIsValidValue(TestAllTypesLiteNestedEnum value); +NSString *NSStringFromTestAllTypesLiteNestedEnum(TestAllTypesLiteNestedEnum value); @interface UnittestLiteRoot : NSObject { @@ -173,7 +175,7 @@ BOOL TestAllTypesLiteNestedEnumIsValidValue(TestAllTypesLiteNestedEnum value); + (id) packedEnumExtensionLite; @end -@interface TestAllTypesLite : PBGeneratedMessage { +@interface TestAllTypesLite : PBGeneratedMessage { @private BOOL hasOptionalBool_:1; BOOL hasDefaultBool_:1; @@ -470,7 +472,7 @@ BOOL TestAllTypesLiteNestedEnumIsValidValue(TestAllTypesLiteNestedEnum value); + (TestAllTypesLite*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; @end -@interface TestAllTypesLiteNestedMessage : PBGeneratedMessage { +@interface TestAllTypesLiteNestedMessage : PBGeneratedMessage { @private BOOL hasBb_:1; SInt32 bb; @@ -519,7 +521,7 @@ BOOL TestAllTypesLiteNestedEnumIsValidValue(TestAllTypesLiteNestedEnum value); - (TestAllTypesLiteNestedMessageBuilder*) clearBb; @end -@interface TestAllTypesLiteOptionalGroup : PBGeneratedMessage { +@interface TestAllTypesLiteOptionalGroup : PBGeneratedMessage { @private BOOL hasA_:1; SInt32 a; @@ -568,7 +570,7 @@ BOOL TestAllTypesLiteNestedEnumIsValidValue(TestAllTypesLiteNestedEnum value); - (TestAllTypesLiteOptionalGroupBuilder*) clearA; @end -@interface TestAllTypesLiteRepeatedGroup : PBGeneratedMessage { +@interface TestAllTypesLiteRepeatedGroup : PBGeneratedMessage { @private BOOL hasA_:1; SInt32 a; @@ -1065,7 +1067,7 @@ BOOL TestAllTypesLiteNestedEnumIsValidValue(TestAllTypesLiteNestedEnum value); - (TestAllTypesLiteBuilder*) clearOneofBytes; @end -@interface ForeignMessageLite : PBGeneratedMessage { +@interface ForeignMessageLite : PBGeneratedMessage { @private BOOL hasC_:1; SInt32 c; @@ -1114,7 +1116,7 @@ BOOL TestAllTypesLiteNestedEnumIsValidValue(TestAllTypesLiteNestedEnum value); - (ForeignMessageLiteBuilder*) clearC; @end -@interface TestPackedTypesLite : PBGeneratedMessage { +@interface TestPackedTypesLite : PBGeneratedMessage { @private PBAppendableArray * packedBoolArray; SInt32 packedBoolMemoizedSerializedSize; @@ -1308,7 +1310,7 @@ BOOL TestAllTypesLiteNestedEnumIsValidValue(TestAllTypesLiteNestedEnum value); - (TestPackedTypesLiteBuilder *)clearPackedEnum; @end -@interface TestAllExtensionsLite : PBExtendableMessage { +@interface TestAllExtensionsLite : PBExtendableMessage { @private } @@ -1348,7 +1350,7 @@ BOOL TestAllTypesLiteNestedEnumIsValidValue(TestAllTypesLiteNestedEnum value); - (TestAllExtensionsLiteBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; @end -@interface OptionalGroup_extension_lite : PBGeneratedMessage { +@interface OptionalGroup_extension_lite : PBGeneratedMessage { @private BOOL hasA_:1; SInt32 a; @@ -1397,7 +1399,7 @@ BOOL TestAllTypesLiteNestedEnumIsValidValue(TestAllTypesLiteNestedEnum value); - (OptionalGroup_extension_liteBuilder*) clearA; @end -@interface RepeatedGroup_extension_lite : PBGeneratedMessage { +@interface RepeatedGroup_extension_lite : PBGeneratedMessage { @private BOOL hasA_:1; SInt32 a; @@ -1446,7 +1448,7 @@ BOOL TestAllTypesLiteNestedEnumIsValidValue(TestAllTypesLiteNestedEnum value); - (RepeatedGroup_extension_liteBuilder*) clearA; @end -@interface TestPackedExtensionsLite : PBExtendableMessage { +@interface TestPackedExtensionsLite : PBExtendableMessage { @private } @@ -1486,7 +1488,7 @@ BOOL TestAllTypesLiteNestedEnumIsValidValue(TestAllTypesLiteNestedEnum value); - (TestPackedExtensionsLiteBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; @end -@interface TestNestedExtensionLite : PBGeneratedMessage { +@interface TestNestedExtensionLite : PBGeneratedMessage { @private } @@ -1527,7 +1529,7 @@ BOOL TestAllTypesLiteNestedEnumIsValidValue(TestAllTypesLiteNestedEnum value); - (TestNestedExtensionLiteBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; @end -@interface TestDeprecatedLite : PBGeneratedMessage { +@interface TestDeprecatedLite : PBGeneratedMessage { @private BOOL hasDeprecatedField_:1; SInt32 deprecatedField; @@ -1576,7 +1578,7 @@ BOOL TestAllTypesLiteNestedEnumIsValidValue(TestAllTypesLiteNestedEnum value); - (TestDeprecatedLiteBuilder*) clearDeprecatedField; @end -@interface TestParsingMergeLite : PBExtendableMessage { +@interface TestParsingMergeLite : PBExtendableMessage { @private BOOL hasOptionalGroup_:1; BOOL hasRequiredAllTypes_:1; @@ -1618,7 +1620,7 @@ BOOL TestAllTypesLiteNestedEnumIsValidValue(TestAllTypesLiteNestedEnum value); + (TestParsingMergeLite*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; @end -@interface TestParsingMergeLiteRepeatedFieldsGenerator : PBGeneratedMessage { +@interface TestParsingMergeLiteRepeatedFieldsGenerator : PBGeneratedMessage { @private NSMutableArray * group1Array; NSMutableArray * group2Array; @@ -1661,7 +1663,7 @@ BOOL TestAllTypesLiteNestedEnumIsValidValue(TestAllTypesLiteNestedEnum value); + (TestParsingMergeLiteRepeatedFieldsGenerator*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; @end -@interface TestParsingMergeLiteRepeatedFieldsGeneratorGroup1 : PBGeneratedMessage { +@interface TestParsingMergeLiteRepeatedFieldsGeneratorGroup1 : PBGeneratedMessage { @private BOOL hasField1_:1; TestAllTypesLite* field1; @@ -1712,7 +1714,7 @@ BOOL TestAllTypesLiteNestedEnumIsValidValue(TestAllTypesLiteNestedEnum value); - (TestParsingMergeLiteRepeatedFieldsGeneratorGroup1Builder*) clearField1; @end -@interface TestParsingMergeLiteRepeatedFieldsGeneratorGroup2 : PBGeneratedMessage { +@interface TestParsingMergeLiteRepeatedFieldsGeneratorGroup2 : PBGeneratedMessage { @private BOOL hasField1_:1; TestAllTypesLite* field1; @@ -1823,7 +1825,7 @@ BOOL TestAllTypesLiteNestedEnumIsValidValue(TestAllTypesLiteNestedEnum value); - (TestParsingMergeLiteRepeatedFieldsGeneratorBuilder *)clearExt2; @end -@interface TestParsingMergeLiteOptionalGroup : PBGeneratedMessage { +@interface TestParsingMergeLiteOptionalGroup : PBGeneratedMessage { @private BOOL hasOptionalGroupAllTypes_:1; TestAllTypesLite* optionalGroupAllTypes; @@ -1874,7 +1876,7 @@ BOOL TestAllTypesLiteNestedEnumIsValidValue(TestAllTypesLiteNestedEnum value); - (TestParsingMergeLiteOptionalGroupBuilder*) clearOptionalGroupAllTypes; @end -@interface TestParsingMergeLiteRepeatedGroup : PBGeneratedMessage { +@interface TestParsingMergeLiteRepeatedGroup : PBGeneratedMessage { @private BOOL hasRepeatedGroupAllTypes_:1; TestAllTypesLite* repeatedGroupAllTypes; @@ -1976,7 +1978,7 @@ BOOL TestAllTypesLiteNestedEnumIsValidValue(TestAllTypesLiteNestedEnum value); - (TestParsingMergeLiteBuilder *)clearRepeatedGroup; @end -@interface TestEmptyMessageLite : PBGeneratedMessage { +@interface TestEmptyMessageLite : PBGeneratedMessage { @private } @@ -2016,7 +2018,7 @@ BOOL TestAllTypesLiteNestedEnumIsValidValue(TestAllTypesLiteNestedEnum value); - (TestEmptyMessageLiteBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; @end -@interface TestEmptyMessageWithExtensionsLite : PBExtendableMessage { +@interface TestEmptyMessageWithExtensionsLite : PBExtendableMessage { @private } diff --git a/src/runtime/Tests/Unittest_lite.pb.m b/src/runtime/Tests/Unittest_lite.pb.m index 42873f7..6ef3e03 100644 --- a/src/runtime/Tests/Unittest_lite.pb.m +++ b/src/runtime/Tests/Unittest_lite.pb.m @@ -1310,6 +1310,19 @@ BOOL ForeignEnumLiteIsValidValue(ForeignEnumLite value) { return NO; } } +NSString *NSStringFromForeignEnumLite(ForeignEnumLite value) { + switch (value) { + case ForeignEnumLiteForeignLiteFoo: + return @"ForeignEnumLiteForeignLiteFoo"; + case ForeignEnumLiteForeignLiteBar: + return @"ForeignEnumLiteForeignLiteBar"; + case ForeignEnumLiteForeignLiteBaz: + return @"ForeignEnumLiteForeignLiteBaz"; + default: + return nil; + } +} + @interface TestAllTypesLite () @property SInt32 optionalInt32; @property SInt64 optionalInt64; @@ -2758,13 +2771,13 @@ - (void) writeDescriptionTo:(NSMutableString*) output withIndent:(NSString*) ind [output appendFormat:@"%@}\n", indent]; } if (self.hasOptionalNestedEnum) { - [output appendFormat:@"%@%@: %@\n", indent, @"optionalNestedEnum", [NSNumber numberWithInteger:self.optionalNestedEnum]]; + [output appendFormat:@"%@%@: %@\n", indent, @"optionalNestedEnum", NSStringFromTestAllTypesLiteNestedEnum(self.optionalNestedEnum)]; } if (self.hasOptionalForeignEnum) { - [output appendFormat:@"%@%@: %@\n", indent, @"optionalForeignEnum", [NSNumber numberWithInteger:self.optionalForeignEnum]]; + [output appendFormat:@"%@%@: %@\n", indent, @"optionalForeignEnum", NSStringFromForeignEnumLite(self.optionalForeignEnum)]; } if (self.hasOptionalImportEnum) { - [output appendFormat:@"%@%@: %@\n", indent, @"optionalImportEnum", [NSNumber numberWithInteger:self.optionalImportEnum]]; + [output appendFormat:@"%@%@: %@\n", indent, @"optionalImportEnum", NSStringFromImportEnumLite(self.optionalImportEnum)]; } if (self.hasOptionalStringPiece) { [output appendFormat:@"%@%@: %@\n", indent, @"optionalStringPiece", self.optionalStringPiece]; @@ -2854,13 +2867,13 @@ - (void) writeDescriptionTo:(NSMutableString*) output withIndent:(NSString*) ind [output appendFormat:@"%@}\n", indent]; }]; [self.repeatedNestedEnumArray enumerateObjectsUsingBlock:^(id element, NSUInteger idx, BOOL *stop) { - [output appendFormat:@"%@%@: %@\n", indent, @"repeatedNestedEnum", element]; + [output appendFormat:@"%@%@: %@\n", indent, @"repeatedNestedEnum", NSStringFromTestAllTypesLiteNestedEnum([(NSNumber *)element intValue])]; }]; [self.repeatedForeignEnumArray enumerateObjectsUsingBlock:^(id element, NSUInteger idx, BOOL *stop) { - [output appendFormat:@"%@%@: %@\n", indent, @"repeatedForeignEnum", element]; + [output appendFormat:@"%@%@: %@\n", indent, @"repeatedForeignEnum", NSStringFromForeignEnumLite([(NSNumber *)element intValue])]; }]; [self.repeatedImportEnumArray enumerateObjectsUsingBlock:^(id element, NSUInteger idx, BOOL *stop) { - [output appendFormat:@"%@%@: %@\n", indent, @"repeatedImportEnum", element]; + [output appendFormat:@"%@%@: %@\n", indent, @"repeatedImportEnum", NSStringFromImportEnumLite([(NSNumber *)element intValue])]; }]; [self.repeatedStringPieceArray enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { [output appendFormat:@"%@%@: %@\n", indent, @"repeatedStringPiece", obj]; @@ -2920,13 +2933,13 @@ - (void) writeDescriptionTo:(NSMutableString*) output withIndent:(NSString*) ind [output appendFormat:@"%@%@: %@\n", indent, @"defaultBytes", self.defaultBytes]; } if (self.hasDefaultNestedEnum) { - [output appendFormat:@"%@%@: %@\n", indent, @"defaultNestedEnum", [NSNumber numberWithInteger:self.defaultNestedEnum]]; + [output appendFormat:@"%@%@: %@\n", indent, @"defaultNestedEnum", NSStringFromTestAllTypesLiteNestedEnum(self.defaultNestedEnum)]; } if (self.hasDefaultForeignEnum) { - [output appendFormat:@"%@%@: %@\n", indent, @"defaultForeignEnum", [NSNumber numberWithInteger:self.defaultForeignEnum]]; + [output appendFormat:@"%@%@: %@\n", indent, @"defaultForeignEnum", NSStringFromForeignEnumLite(self.defaultForeignEnum)]; } if (self.hasDefaultImportEnum) { - [output appendFormat:@"%@%@: %@\n", indent, @"defaultImportEnum", [NSNumber numberWithInteger:self.defaultImportEnum]]; + [output appendFormat:@"%@%@: %@\n", indent, @"defaultImportEnum", NSStringFromImportEnumLite(self.defaultImportEnum)]; } if (self.hasDefaultStringPiece) { [output appendFormat:@"%@%@: %@\n", indent, @"defaultStringPiece", self.defaultStringPiece]; @@ -3329,6 +3342,19 @@ BOOL TestAllTypesLiteNestedEnumIsValidValue(TestAllTypesLiteNestedEnum value) { return NO; } } +NSString *NSStringFromTestAllTypesLiteNestedEnum(TestAllTypesLiteNestedEnum value) { + switch (value) { + case TestAllTypesLiteNestedEnumFoo: + return @"TestAllTypesLiteNestedEnumFoo"; + case TestAllTypesLiteNestedEnumBar: + return @"TestAllTypesLiteNestedEnumBar"; + case TestAllTypesLiteNestedEnumBaz: + return @"TestAllTypesLiteNestedEnumBaz"; + default: + return nil; + } +} + @interface TestAllTypesLiteNestedMessage () @property SInt32 bb; @end @@ -6932,7 +6958,7 @@ - (void) writeDescriptionTo:(NSMutableString*) output withIndent:(NSString*) ind [output appendFormat:@"%@%@: %@\n", indent, @"packedBool", obj]; }]; [self.packedEnumArray enumerateObjectsUsingBlock:^(id element, NSUInteger idx, BOOL *stop) { - [output appendFormat:@"%@%@: %@\n", indent, @"packedEnum", element]; + [output appendFormat:@"%@%@: %@\n", indent, @"packedEnum", NSStringFromForeignEnumLite([(NSNumber *)element intValue])]; }]; [self.unknownFields writeDescriptionTo:output withIndent:indent]; } diff --git a/src/runtime/Tests/Unittest_lite_imports_nonlite.pb.h b/src/runtime/Tests/Unittest_lite_imports_nonlite.pb.h index 7180d54..607aecb 100644 --- a/src/runtime/Tests/Unittest_lite_imports_nonlite.pb.h +++ b/src/runtime/Tests/Unittest_lite_imports_nonlite.pb.h @@ -170,7 +170,7 @@ + (void) registerAllExtensions:(PBMutableExtensionRegistry*) registry; @end -@interface TestLiteImportsNonlite : PBGeneratedMessage { +@interface TestLiteImportsNonlite : PBGeneratedMessage { @private BOOL hasMessage_:1; TestAllTypes* message; diff --git a/src/runtime/Tests/Unittest_mset.pb.h b/src/runtime/Tests/Unittest_mset.pb.h index fd46a9d..f62e4ab 100644 --- a/src/runtime/Tests/Unittest_mset.pb.h +++ b/src/runtime/Tests/Unittest_mset.pb.h @@ -35,7 +35,7 @@ + (void) registerAllExtensions:(PBMutableExtensionRegistry*) registry; @end -@interface TestMessageSet : PBExtendableMessage { +@interface TestMessageSet : PBExtendableMessage { @private } @@ -75,7 +75,7 @@ - (TestMessageSetBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; @end -@interface TestMessageSetContainer : PBGeneratedMessage { +@interface TestMessageSetContainer : PBGeneratedMessage { @private BOOL hasMessageSet_:1; TestMessageSet* messageSet; @@ -126,7 +126,7 @@ - (TestMessageSetContainerBuilder*) clearMessageSet; @end -@interface TestMessageSetExtension1 : PBGeneratedMessage { +@interface TestMessageSetExtension1 : PBGeneratedMessage { @private BOOL hasI_:1; SInt32 i; @@ -176,7 +176,7 @@ - (TestMessageSetExtension1Builder*) clearI; @end -@interface TestMessageSetExtension2 : PBGeneratedMessage { +@interface TestMessageSetExtension2 : PBGeneratedMessage { @private BOOL hasStr_:1; NSString* str; @@ -226,7 +226,7 @@ - (TestMessageSetExtension2Builder*) clearStr; @end -@interface RawMessageSet : PBGeneratedMessage { +@interface RawMessageSet : PBGeneratedMessage { @private NSMutableArray * itemArray; } @@ -251,7 +251,7 @@ + (RawMessageSet*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; @end -@interface RawMessageSetItem : PBGeneratedMessage { +@interface RawMessageSetItem : PBGeneratedMessage { @private BOOL hasTypeId_:1; BOOL hasMessage_:1; diff --git a/src/runtime/Tests/Unittest_no_generic_services.pb.h b/src/runtime/Tests/Unittest_no_generic_services.pb.h index f841bec..7dad8db 100644 --- a/src/runtime/Tests/Unittest_no_generic_services.pb.h +++ b/src/runtime/Tests/Unittest_no_generic_services.pb.h @@ -23,6 +23,7 @@ typedef NS_ENUM(SInt32, TestEnum) { }; BOOL TestEnumIsValidValue(TestEnum value); +NSString *NSStringFromTestEnum(TestEnum value); @interface UnittestNoGenericServicesRoot : NSObject { @@ -32,7 +33,7 @@ BOOL TestEnumIsValidValue(TestEnum value); + (id) testExtension; @end -@interface TestMessage : PBExtendableMessage { +@interface TestMessage : PBExtendableMessage { @private BOOL hasA_:1; SInt32 a; diff --git a/src/runtime/Tests/Unittest_no_generic_services.pb.m b/src/runtime/Tests/Unittest_no_generic_services.pb.m index 453f8b6..e44693e 100644 --- a/src/runtime/Tests/Unittest_no_generic_services.pb.m +++ b/src/runtime/Tests/Unittest_no_generic_services.pb.m @@ -42,6 +42,15 @@ BOOL TestEnumIsValidValue(TestEnum value) { return NO; } } +NSString *NSStringFromTestEnum(TestEnum value) { + switch (value) { + case TestEnumFoo: + return @"TestEnumFoo"; + default: + return nil; + } +} + @interface TestMessage () @property SInt32 a; @end diff --git a/src/runtime/Tests/Unittest_optimize_for.pb.h b/src/runtime/Tests/Unittest_optimize_for.pb.h index b65fc32..06d0597 100644 --- a/src/runtime/Tests/Unittest_optimize_for.pb.h +++ b/src/runtime/Tests/Unittest_optimize_for.pb.h @@ -174,7 +174,7 @@ + (void) registerAllExtensions:(PBMutableExtensionRegistry*) registry; @end -@interface TestOptimizedForSize : PBExtendableMessage { +@interface TestOptimizedForSize : PBExtendableMessage { @private BOOL hasI_:1; BOOL hasIntegerField_:1; @@ -254,7 +254,7 @@ - (TestOptimizedForSizeBuilder*) clearStringField; @end -@interface TestRequiredOptimizedForSize : PBGeneratedMessage { +@interface TestRequiredOptimizedForSize : PBGeneratedMessage { @private BOOL hasX_:1; SInt32 x; @@ -303,7 +303,7 @@ - (TestRequiredOptimizedForSizeBuilder*) clearX; @end -@interface TestOptionalOptimizedForSize : PBGeneratedMessage { +@interface TestOptionalOptimizedForSize : PBGeneratedMessage { @private BOOL hasO_:1; TestRequiredOptimizedForSize* o;