aboutsummaryrefslogtreecommitdiff
path: root/objectivec/google
diff options
context:
space:
mode:
authorThomas Van Lenten <thomasvl@google.com>2015-05-01 08:57:16 -0400
committerThomas Van Lenten <thomasvl@google.com>2015-05-06 13:19:14 -0400
commit30650d81d9baa446dbc8deb784ba53794cafda5b (patch)
tree993f42cbfc871dd25d9273606f48d7c3b520df27 /objectivec/google
parentefa666cf0ad77827ac0b15a159e2c85e9991d77c (diff)
downloadprotobuf-30650d81d9baa446dbc8deb784ba53794cafda5b.tar.gz
protobuf-30650d81d9baa446dbc8deb784ba53794cafda5b.tar.bz2
protobuf-30650d81d9baa446dbc8deb784ba53794cafda5b.zip
Alpha 1 drop of Google's Objective C plugin and runtime support for protobufs.
Diffstat (limited to 'objectivec/google')
-rw-r--r--objectivec/google/protobuf/Descriptor.pbobjc.h1046
-rw-r--r--objectivec/google/protobuf/Descriptor.pbobjc.m2205
-rw-r--r--objectivec/google/protobuf/Duration.pbobjc.h83
-rw-r--r--objectivec/google/protobuf/Duration.pbobjc.m85
-rw-r--r--objectivec/google/protobuf/Timestamp.pbobjc.h94
-rw-r--r--objectivec/google/protobuf/Timestamp.pbobjc.m85
6 files changed, 3598 insertions, 0 deletions
diff --git a/objectivec/google/protobuf/Descriptor.pbobjc.h b/objectivec/google/protobuf/Descriptor.pbobjc.h
new file mode 100644
index 00000000..7b11d899
--- /dev/null
+++ b/objectivec/google/protobuf/Descriptor.pbobjc.h
@@ -0,0 +1,1046 @@
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: google/protobuf/descriptor.proto
+
+#import "GPBProtocolBuffers.h"
+
+#if GOOGLE_PROTOBUF_OBJC_GEN_VERSION != 30000
+#error This file was generated by a different version of protoc-gen-objc which is incompatible with your Protocol Buffer sources.
+#endif
+
+CF_EXTERN_C_BEGIN
+
+@class GPBDescriptorProto;
+@class GPBDescriptorProto_ExtensionRange;
+@class GPBEnumDescriptorProto;
+@class GPBEnumOptions;
+@class GPBEnumValueDescriptorProto;
+@class GPBEnumValueOptions;
+@class GPBFieldDescriptorProto;
+@class GPBFieldOptions;
+@class GPBFileDescriptorProto;
+@class GPBFileDescriptorSet;
+@class GPBFileOptions;
+@class GPBMessageOptions;
+@class GPBMethodDescriptorProto;
+@class GPBMethodOptions;
+@class GPBOneofDescriptorProto;
+@class GPBServiceDescriptorProto;
+@class GPBServiceOptions;
+@class GPBSourceCodeInfo;
+@class GPBSourceCodeInfo_Location;
+@class GPBUninterpretedOption;
+@class GPBUninterpretedOption_NamePart;
+
+#pragma mark - Enum GPBFieldDescriptorProto_Type
+
+typedef GPB_ENUM(GPBFieldDescriptorProto_Type) {
+ // 0 is reserved for errors.
+ // Order is weird for historical reasons.
+ GPBFieldDescriptorProto_Type_TypeDouble = 1,
+ GPBFieldDescriptorProto_Type_TypeFloat = 2,
+
+ // Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT64 if
+ // negative values are likely.
+ GPBFieldDescriptorProto_Type_TypeInt64 = 3,
+ GPBFieldDescriptorProto_Type_TypeUint64 = 4,
+
+ // Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT32 if
+ // negative values are likely.
+ GPBFieldDescriptorProto_Type_TypeInt32 = 5,
+ GPBFieldDescriptorProto_Type_TypeFixed64 = 6,
+ GPBFieldDescriptorProto_Type_TypeFixed32 = 7,
+ GPBFieldDescriptorProto_Type_TypeBool = 8,
+ GPBFieldDescriptorProto_Type_TypeString = 9,
+
+ // Tag-delimited aggregate.
+ GPBFieldDescriptorProto_Type_TypeGroup = 10,
+
+ // Length-delimited aggregate.
+ GPBFieldDescriptorProto_Type_TypeMessage = 11,
+
+ // New in version 2.
+ GPBFieldDescriptorProto_Type_TypeBytes = 12,
+ GPBFieldDescriptorProto_Type_TypeUint32 = 13,
+ GPBFieldDescriptorProto_Type_TypeEnum = 14,
+ GPBFieldDescriptorProto_Type_TypeSfixed32 = 15,
+ GPBFieldDescriptorProto_Type_TypeSfixed64 = 16,
+
+ // Uses ZigZag encoding.
+ GPBFieldDescriptorProto_Type_TypeSint32 = 17,
+
+ // Uses ZigZag encoding.
+ GPBFieldDescriptorProto_Type_TypeSint64 = 18,
+};
+
+GPBEnumDescriptor *GPBFieldDescriptorProto_Type_EnumDescriptor(void);
+
+BOOL GPBFieldDescriptorProto_Type_IsValidValue(int32_t value);
+
+#pragma mark - Enum GPBFieldDescriptorProto_Label
+
+typedef GPB_ENUM(GPBFieldDescriptorProto_Label) {
+ // 0 is reserved for errors
+ GPBFieldDescriptorProto_Label_LabelOptional = 1,
+ GPBFieldDescriptorProto_Label_LabelRequired = 2,
+
+ // TODO(sanjay): Should we add LABEL_MAP?
+ GPBFieldDescriptorProto_Label_LabelRepeated = 3,
+};
+
+GPBEnumDescriptor *GPBFieldDescriptorProto_Label_EnumDescriptor(void);
+
+BOOL GPBFieldDescriptorProto_Label_IsValidValue(int32_t value);
+
+#pragma mark - Enum GPBFileOptions_OptimizeMode
+
+// Generated classes can be optimized for speed or code size.
+typedef GPB_ENUM(GPBFileOptions_OptimizeMode) {
+ // Generate complete code for parsing, serialization,
+ GPBFileOptions_OptimizeMode_Speed = 1,
+
+ // etc.
+ GPBFileOptions_OptimizeMode_CodeSize = 2,
+
+ // Generate code using MessageLite and the lite runtime.
+ GPBFileOptions_OptimizeMode_LiteRuntime = 3,
+};
+
+GPBEnumDescriptor *GPBFileOptions_OptimizeMode_EnumDescriptor(void);
+
+BOOL GPBFileOptions_OptimizeMode_IsValidValue(int32_t value);
+
+#pragma mark - Enum GPBFieldOptions_CType
+
+typedef GPB_ENUM(GPBFieldOptions_CType) {
+ // Default mode.
+ GPBFieldOptions_CType_String = 0,
+ GPBFieldOptions_CType_Cord = 1,
+ GPBFieldOptions_CType_StringPiece = 2,
+};
+
+GPBEnumDescriptor *GPBFieldOptions_CType_EnumDescriptor(void);
+
+BOOL GPBFieldOptions_CType_IsValidValue(int32_t value);
+
+
+#pragma mark - GPBDescriptorRoot
+
+@interface GPBDescriptorRoot : GPBRootObject
+@end
+
+#pragma mark - GPBFileDescriptorSet
+
+typedef GPB_ENUM(GPBFileDescriptorSet_FieldNumber) {
+ GPBFileDescriptorSet_FieldNumber_FileArray = 1,
+};
+
+// The protocol compiler can output a FileDescriptorSet containing the .proto
+// files it parses.
+@interface GPBFileDescriptorSet : GPBMessage
+
+// |fileArray| contains |GPBFileDescriptorProto|
+@property(nonatomic, readwrite, strong) NSMutableArray *fileArray;
+
+@end
+
+#pragma mark - GPBFileDescriptorProto
+
+typedef GPB_ENUM(GPBFileDescriptorProto_FieldNumber) {
+ GPBFileDescriptorProto_FieldNumber_Name = 1,
+ GPBFileDescriptorProto_FieldNumber_Package = 2,
+ GPBFileDescriptorProto_FieldNumber_DependencyArray = 3,
+ GPBFileDescriptorProto_FieldNumber_MessageTypeArray = 4,
+ GPBFileDescriptorProto_FieldNumber_EnumTypeArray = 5,
+ GPBFileDescriptorProto_FieldNumber_ServiceArray = 6,
+ GPBFileDescriptorProto_FieldNumber_ExtensionArray = 7,
+ GPBFileDescriptorProto_FieldNumber_Options = 8,
+ GPBFileDescriptorProto_FieldNumber_SourceCodeInfo = 9,
+ GPBFileDescriptorProto_FieldNumber_PublicDependencyArray = 10,
+ GPBFileDescriptorProto_FieldNumber_WeakDependencyArray = 11,
+ GPBFileDescriptorProto_FieldNumber_Syntax = 12,
+};
+
+// Describes a complete .proto file.
+@interface GPBFileDescriptorProto : GPBMessage
+
+// file name, relative to root of source tree
+@property(nonatomic, readwrite) BOOL hasName;
+@property(nonatomic, readwrite, copy) NSString *name;
+
+// e.g. "foo", "foo.bar", etc.
+@property(nonatomic, readwrite) BOOL hasPackage;
+@property(nonatomic, readwrite, copy) NSString *package;
+
+// Names of files imported by this file.
+// |dependencyArray| contains |NSString|
+@property(nonatomic, readwrite, strong) NSMutableArray *dependencyArray;
+
+// Indexes of the public imported files in the dependency list above.
+@property(nonatomic, readwrite, strong) GPBInt32Array *publicDependencyArray;
+
+// Indexes of the weak imported files in the dependency list.
+// For Google-internal migration only. Do not use.
+@property(nonatomic, readwrite, strong) GPBInt32Array *weakDependencyArray;
+
+// All top-level definitions in this file.
+// |messageTypeArray| contains |GPBDescriptorProto|
+@property(nonatomic, readwrite, strong) NSMutableArray *messageTypeArray;
+
+// |enumTypeArray| contains |GPBEnumDescriptorProto|
+@property(nonatomic, readwrite, strong) NSMutableArray *enumTypeArray;
+
+// |serviceArray| contains |GPBServiceDescriptorProto|
+@property(nonatomic, readwrite, strong) NSMutableArray *serviceArray;
+
+// |extensionArray| contains |GPBFieldDescriptorProto|
+@property(nonatomic, readwrite, strong) NSMutableArray *extensionArray;
+
+@property(nonatomic, readwrite) BOOL hasOptions;
+@property(nonatomic, readwrite, strong) GPBFileOptions *options;
+
+// This field contains optional information about the original source code.
+// You may safely remove this entire field without harming runtime
+// functionality of the descriptors -- the information is needed only by
+// development tools.
+@property(nonatomic, readwrite) BOOL hasSourceCodeInfo;
+@property(nonatomic, readwrite, strong) GPBSourceCodeInfo *sourceCodeInfo;
+
+// The syntax of the proto file.
+// The supported values are "proto2" and "proto3".
+@property(nonatomic, readwrite) BOOL hasSyntax;
+@property(nonatomic, readwrite, copy) NSString *syntax;
+
+@end
+
+#pragma mark - GPBDescriptorProto
+
+typedef GPB_ENUM(GPBDescriptorProto_FieldNumber) {
+ GPBDescriptorProto_FieldNumber_Name = 1,
+ GPBDescriptorProto_FieldNumber_FieldArray = 2,
+ GPBDescriptorProto_FieldNumber_NestedTypeArray = 3,
+ GPBDescriptorProto_FieldNumber_EnumTypeArray = 4,
+ GPBDescriptorProto_FieldNumber_ExtensionRangeArray = 5,
+ GPBDescriptorProto_FieldNumber_ExtensionArray = 6,
+ GPBDescriptorProto_FieldNumber_Options = 7,
+ GPBDescriptorProto_FieldNumber_OneofDeclArray = 8,
+};
+
+// Describes a message type.
+@interface GPBDescriptorProto : GPBMessage
+
+@property(nonatomic, readwrite) BOOL hasName;
+@property(nonatomic, readwrite, copy) NSString *name;
+
+// |fieldArray| contains |GPBFieldDescriptorProto|
+@property(nonatomic, readwrite, strong) NSMutableArray *fieldArray;
+
+// |extensionArray| contains |GPBFieldDescriptorProto|
+@property(nonatomic, readwrite, strong) NSMutableArray *extensionArray;
+
+// |nestedTypeArray| contains |GPBDescriptorProto|
+@property(nonatomic, readwrite, strong) NSMutableArray *nestedTypeArray;
+
+// |enumTypeArray| contains |GPBEnumDescriptorProto|
+@property(nonatomic, readwrite, strong) NSMutableArray *enumTypeArray;
+
+// |extensionRangeArray| contains |GPBDescriptorProto_ExtensionRange|
+@property(nonatomic, readwrite, strong) NSMutableArray *extensionRangeArray;
+
+// |oneofDeclArray| contains |GPBOneofDescriptorProto|
+@property(nonatomic, readwrite, strong) NSMutableArray *oneofDeclArray;
+
+@property(nonatomic, readwrite) BOOL hasOptions;
+@property(nonatomic, readwrite, strong) GPBMessageOptions *options;
+
+@end
+
+#pragma mark - GPBDescriptorProto_ExtensionRange
+
+typedef GPB_ENUM(GPBDescriptorProto_ExtensionRange_FieldNumber) {
+ GPBDescriptorProto_ExtensionRange_FieldNumber_Start = 1,
+ GPBDescriptorProto_ExtensionRange_FieldNumber_End = 2,
+};
+
+@interface GPBDescriptorProto_ExtensionRange : GPBMessage
+
+@property(nonatomic, readwrite) BOOL hasStart;
+@property(nonatomic, readwrite) int32_t start;
+
+@property(nonatomic, readwrite) BOOL hasEnd;
+@property(nonatomic, readwrite) int32_t end;
+
+@end
+
+#pragma mark - GPBFieldDescriptorProto
+
+typedef GPB_ENUM(GPBFieldDescriptorProto_FieldNumber) {
+ GPBFieldDescriptorProto_FieldNumber_Name = 1,
+ GPBFieldDescriptorProto_FieldNumber_Extendee = 2,
+ GPBFieldDescriptorProto_FieldNumber_Number = 3,
+ GPBFieldDescriptorProto_FieldNumber_Label = 4,
+ GPBFieldDescriptorProto_FieldNumber_Type = 5,
+ GPBFieldDescriptorProto_FieldNumber_TypeName = 6,
+ GPBFieldDescriptorProto_FieldNumber_DefaultValue = 7,
+ GPBFieldDescriptorProto_FieldNumber_Options = 8,
+ GPBFieldDescriptorProto_FieldNumber_OneofIndex = 9,
+};
+
+// Describes a field within a message.
+@interface GPBFieldDescriptorProto : GPBMessage
+
+@property(nonatomic, readwrite) BOOL hasName;
+@property(nonatomic, readwrite, copy) NSString *name;
+
+@property(nonatomic, readwrite) BOOL hasNumber;
+@property(nonatomic, readwrite) int32_t number;
+
+@property(nonatomic, readwrite) BOOL hasLabel;
+@property(nonatomic, readwrite) GPBFieldDescriptorProto_Label label;
+
+// If type_name is set, this need not be set. If both this and type_name
+// are set, this must be one of TYPE_ENUM, TYPE_MESSAGE or TYPE_GROUP.
+@property(nonatomic, readwrite) BOOL hasType;
+@property(nonatomic, readwrite) GPBFieldDescriptorProto_Type type;
+
+// For message and enum types, this is the name of the type. If the name
+// starts with a '.', it is fully-qualified. Otherwise, C++-like scoping
+// rules are used to find the type (i.e. first the nested types within this
+// message are searched, then within the parent, on up to the root
+// namespace).
+@property(nonatomic, readwrite) BOOL hasTypeName;
+@property(nonatomic, readwrite, copy) NSString *typeName;
+
+// For extensions, this is the name of the type being extended. It is
+// resolved in the same manner as type_name.
+@property(nonatomic, readwrite) BOOL hasExtendee;
+@property(nonatomic, readwrite, copy) NSString *extendee;
+
+// For numeric types, contains the original text representation of the value.
+// For booleans, "true" or "false".
+// For strings, contains the default text contents (not escaped in any way).
+// For bytes, contains the C escaped value. All bytes >= 128 are escaped.
+// TODO(kenton): Base-64 encode?
+@property(nonatomic, readwrite) BOOL hasDefaultValue;
+@property(nonatomic, readwrite, copy) NSString *defaultValue;
+
+// If set, gives the index of a oneof in the containing type's oneof_decl
+// list. This field is a member of that oneof.
+@property(nonatomic, readwrite) BOOL hasOneofIndex;
+@property(nonatomic, readwrite) int32_t oneofIndex;
+
+@property(nonatomic, readwrite) BOOL hasOptions;
+@property(nonatomic, readwrite, strong) GPBFieldOptions *options;
+
+@end
+
+#pragma mark - GPBOneofDescriptorProto
+
+typedef GPB_ENUM(GPBOneofDescriptorProto_FieldNumber) {
+ GPBOneofDescriptorProto_FieldNumber_Name = 1,
+};
+
+// Describes a oneof.
+@interface GPBOneofDescriptorProto : GPBMessage
+
+@property(nonatomic, readwrite) BOOL hasName;
+@property(nonatomic, readwrite, copy) NSString *name;
+
+@end
+
+#pragma mark - GPBEnumDescriptorProto
+
+typedef GPB_ENUM(GPBEnumDescriptorProto_FieldNumber) {
+ GPBEnumDescriptorProto_FieldNumber_Name = 1,
+ GPBEnumDescriptorProto_FieldNumber_ValueArray = 2,
+ GPBEnumDescriptorProto_FieldNumber_Options = 3,
+};
+
+// Describes an enum type.
+@interface GPBEnumDescriptorProto : GPBMessage
+
+@property(nonatomic, readwrite) BOOL hasName;
+@property(nonatomic, readwrite, copy) NSString *name;
+
+// |valueArray| contains |GPBEnumValueDescriptorProto|
+@property(nonatomic, readwrite, strong) NSMutableArray *valueArray;
+
+@property(nonatomic, readwrite) BOOL hasOptions;
+@property(nonatomic, readwrite, strong) GPBEnumOptions *options;
+
+@end
+
+#pragma mark - GPBEnumValueDescriptorProto
+
+typedef GPB_ENUM(GPBEnumValueDescriptorProto_FieldNumber) {
+ GPBEnumValueDescriptorProto_FieldNumber_Name = 1,
+ GPBEnumValueDescriptorProto_FieldNumber_Number = 2,
+ GPBEnumValueDescriptorProto_FieldNumber_Options = 3,
+};
+
+// Describes a value within an enum.
+@interface GPBEnumValueDescriptorProto : GPBMessage
+
+@property(nonatomic, readwrite) BOOL hasName;
+@property(nonatomic, readwrite, copy) NSString *name;
+
+@property(nonatomic, readwrite) BOOL hasNumber;
+@property(nonatomic, readwrite) int32_t number;
+
+@property(nonatomic, readwrite) BOOL hasOptions;
+@property(nonatomic, readwrite, strong) GPBEnumValueOptions *options;
+
+@end
+
+#pragma mark - GPBServiceDescriptorProto
+
+typedef GPB_ENUM(GPBServiceDescriptorProto_FieldNumber) {
+ GPBServiceDescriptorProto_FieldNumber_Name = 1,
+ GPBServiceDescriptorProto_FieldNumber_MethodArray = 2,
+ GPBServiceDescriptorProto_FieldNumber_Options = 3,
+};
+
+// Describes a service.
+@interface GPBServiceDescriptorProto : GPBMessage
+
+@property(nonatomic, readwrite) BOOL hasName;
+@property(nonatomic, readwrite, copy) NSString *name;
+
+// |methodArray| contains |GPBMethodDescriptorProto|
+@property(nonatomic, readwrite, strong) NSMutableArray *methodArray;
+
+@property(nonatomic, readwrite) BOOL hasOptions;
+@property(nonatomic, readwrite, strong) GPBServiceOptions *options;
+
+@end
+
+#pragma mark - GPBMethodDescriptorProto
+
+typedef GPB_ENUM(GPBMethodDescriptorProto_FieldNumber) {
+ GPBMethodDescriptorProto_FieldNumber_Name = 1,
+ GPBMethodDescriptorProto_FieldNumber_InputType = 2,
+ GPBMethodDescriptorProto_FieldNumber_OutputType = 3,
+ GPBMethodDescriptorProto_FieldNumber_Options = 4,
+ GPBMethodDescriptorProto_FieldNumber_ClientStreaming = 5,
+ GPBMethodDescriptorProto_FieldNumber_ServerStreaming = 6,
+};
+
+// Describes a method of a service.
+@interface GPBMethodDescriptorProto : GPBMessage
+
+@property(nonatomic, readwrite) BOOL hasName;
+@property(nonatomic, readwrite, copy) NSString *name;
+
+// Input and output type names. These are resolved in the same way as
+// FieldDescriptorProto.type_name, but must refer to a message type.
+@property(nonatomic, readwrite) BOOL hasInputType;
+@property(nonatomic, readwrite, copy) NSString *inputType;
+
+@property(nonatomic, readwrite) BOOL hasOutputType;
+@property(nonatomic, readwrite, copy) NSString *outputType;
+
+@property(nonatomic, readwrite) BOOL hasOptions;
+@property(nonatomic, readwrite, strong) GPBMethodOptions *options;
+
+// Identifies if client streams multiple client messages
+@property(nonatomic, readwrite) BOOL hasClientStreaming;
+@property(nonatomic, readwrite) BOOL clientStreaming;
+
+// Identifies if server streams multiple server messages
+@property(nonatomic, readwrite) BOOL hasServerStreaming;
+@property(nonatomic, readwrite) BOOL serverStreaming;
+
+@end
+
+#pragma mark - GPBFileOptions
+
+typedef GPB_ENUM(GPBFileOptions_FieldNumber) {
+ GPBFileOptions_FieldNumber_JavaPackage = 1,
+ GPBFileOptions_FieldNumber_JavaOuterClassname = 8,
+ GPBFileOptions_FieldNumber_OptimizeFor = 9,
+ GPBFileOptions_FieldNumber_JavaMultipleFiles = 10,
+ GPBFileOptions_FieldNumber_GoPackage = 11,
+ GPBFileOptions_FieldNumber_CcGenericServices = 16,
+ GPBFileOptions_FieldNumber_JavaGenericServices = 17,
+ GPBFileOptions_FieldNumber_PyGenericServices = 18,
+ GPBFileOptions_FieldNumber_JavaGenerateEqualsAndHash = 20,
+ GPBFileOptions_FieldNumber_Deprecated = 23,
+ GPBFileOptions_FieldNumber_JavaStringCheckUtf8 = 27,
+ GPBFileOptions_FieldNumber_CcEnableArenas = 31,
+ GPBFileOptions_FieldNumber_ObjcClassPrefix = 36,
+ GPBFileOptions_FieldNumber_UninterpretedOptionArray = 999,
+};
+
+@interface GPBFileOptions : GPBMessage
+
+// Sets the Java package where classes generated from this .proto will be
+// placed. By default, the proto package is used, but this is often
+// inappropriate because proto packages do not normally start with backwards
+// domain names.
+@property(nonatomic, readwrite) BOOL hasJavaPackage;
+@property(nonatomic, readwrite, copy) NSString *javaPackage;
+
+// If set, all the classes from the .proto file are wrapped in a single
+// outer class with the given name. This applies to both Proto1
+// (equivalent to the old "--one_java_file" option) and Proto2 (where
+// a .proto always translates to a single class, but you may want to
+// explicitly choose the class name).
+@property(nonatomic, readwrite) BOOL hasJavaOuterClassname;
+@property(nonatomic, readwrite, copy) NSString *javaOuterClassname;
+
+// If set true, then the Java code generator will generate a separate .java
+// file for each top-level message, enum, and service defined in the .proto
+// file. Thus, these types will *not* be nested inside the outer class
+// named by java_outer_classname. However, the outer class will still be
+// generated to contain the file's getDescriptor() method as well as any
+// top-level extensions defined in the file.
+@property(nonatomic, readwrite) BOOL hasJavaMultipleFiles;
+@property(nonatomic, readwrite) BOOL javaMultipleFiles;
+
+// If set true, then the Java code generator will generate equals() and
+// hashCode() methods for all messages defined in the .proto file.
+// - In the full runtime, this is purely a speed optimization, as the
+// AbstractMessage base class includes reflection-based implementations of
+// these methods.
+//- In the lite runtime, setting this option changes the semantics of
+// equals() and hashCode() to more closely match those of the full runtime;
+// the generated methods compute their results based on field values rather
+// than object identity. (Implementations should not assume that hashcodes
+// will be consistent across runtimes or versions of the protocol compiler.)
+@property(nonatomic, readwrite) BOOL hasJavaGenerateEqualsAndHash;
+@property(nonatomic, readwrite) BOOL javaGenerateEqualsAndHash;
+
+// If set true, then the Java2 code generator will generate code that
+// throws an exception whenever an attempt is made to assign a non-UTF-8
+// byte sequence to a string field.
+// Message reflection will do the same.
+// However, an extension field still accepts non-UTF-8 byte sequences.
+// This option has no effect on when used with the lite runtime.
+@property(nonatomic, readwrite) BOOL hasJavaStringCheckUtf8;
+@property(nonatomic, readwrite) BOOL javaStringCheckUtf8;
+
+@property(nonatomic, readwrite) BOOL hasOptimizeFor;
+@property(nonatomic, readwrite) GPBFileOptions_OptimizeMode optimizeFor;
+
+// Sets the Go package where structs generated from this .proto will be
+// placed. If omitted, the Go package will be derived from the following:
+// - The basename of the package import path, if provided.
+// - Otherwise, the package statement in the .proto file, if present.
+// - Otherwise, the basename of the .proto file, without extension.
+@property(nonatomic, readwrite) BOOL hasGoPackage;
+@property(nonatomic, readwrite, copy) NSString *goPackage;
+
+// Should generic services be generated in each language? "Generic" services
+// are not specific to any particular RPC system. They are generated by the
+// main code generators in each language (without additional plugins).
+// Generic services were the only kind of service generation supported by
+// early versions of google.protobuf.
+//
+// Generic services are now considered deprecated in favor of using plugins
+// that generate code specific to your particular RPC system. Therefore,
+// these default to false. Old code which depends on generic services should
+// explicitly set them to true.
+@property(nonatomic, readwrite) BOOL hasCcGenericServices;
+@property(nonatomic, readwrite) BOOL ccGenericServices;
+
+@property(nonatomic, readwrite) BOOL hasJavaGenericServices;
+@property(nonatomic, readwrite) BOOL javaGenericServices;
+
+@property(nonatomic, readwrite) BOOL hasPyGenericServices;
+@property(nonatomic, readwrite) BOOL pyGenericServices;
+
+// Is this file deprecated?
+// Depending on the target platform, this can emit Deprecated annotations
+// for everything in the file, or it will be completely ignored; in the very
+// least, this is a formalization for deprecating files.
+@property(nonatomic, readwrite) BOOL hasDeprecated;
+@property(nonatomic, readwrite) BOOL deprecated;
+
+// Enables the use of arenas for the proto messages in this file. This applies
+// only to generated classes for C++.
+@property(nonatomic, readwrite) BOOL hasCcEnableArenas;
+@property(nonatomic, readwrite) BOOL ccEnableArenas;
+
+// Sets the objective c class prefix which is prepended to all objective c
+// generated classes from this .proto. There is no default.
+@property(nonatomic, readwrite) BOOL hasObjcClassPrefix;
+@property(nonatomic, readwrite, copy) NSString *objcClassPrefix;
+
+// The parser stores options it doesn't recognize here. See above.
+// |uninterpretedOptionArray| contains |GPBUninterpretedOption|
+@property(nonatomic, readwrite, strong) NSMutableArray *uninterpretedOptionArray;
+
+@end
+
+#pragma mark - GPBMessageOptions
+
+typedef GPB_ENUM(GPBMessageOptions_FieldNumber) {
+ GPBMessageOptions_FieldNumber_MessageSetWireFormat = 1,
+ GPBMessageOptions_FieldNumber_NoStandardDescriptorAccessor = 2,
+ GPBMessageOptions_FieldNumber_Deprecated = 3,
+ GPBMessageOptions_FieldNumber_MapEntry = 7,
+ GPBMessageOptions_FieldNumber_UninterpretedOptionArray = 999,
+};
+
+@interface GPBMessageOptions : GPBMessage
+
+// Set true to use the old proto1 MessageSet wire format for extensions.
+// This is provided for backwards-compatibility with the MessageSet wire
+// format. You should not use this for any other reason: It's less
+// efficient, has fewer features, and is more complicated.
+//
+// The message must be defined exactly as follows:
+// message Foo {
+// option message_set_wire_format = true;
+// extensions 4 to max;
+// }
+// Note that the message cannot have any defined fields; MessageSets only
+// have extensions.
+//
+// All extensions of your type must be singular messages; e.g. they cannot
+// be int32s, enums, or repeated messages.
+//
+// Because this is an option, the above two restrictions are not enforced by
+// the protocol compiler.
+@property(nonatomic, readwrite) BOOL hasMessageSetWireFormat;
+@property(nonatomic, readwrite) BOOL messageSetWireFormat;
+
+// Disables the generation of the standard "descriptor()" accessor, which can
+// conflict with a field of the same name. This is meant to make migration
+// from proto1 easier; new code should avoid fields named "descriptor".
+@property(nonatomic, readwrite) BOOL hasNoStandardDescriptorAccessor;
+@property(nonatomic, readwrite) BOOL noStandardDescriptorAccessor;
+
+// Is this message deprecated?
+// Depending on the target platform, this can emit Deprecated annotations
+// for the message, or it will be completely ignored; in the very least,
+// this is a formalization for deprecating messages.
+@property(nonatomic, readwrite) BOOL hasDeprecated;
+@property(nonatomic, readwrite) BOOL deprecated;
+
+// Whether the message is an automatically generated map entry type for the
+// maps field.
+//
+// For maps fields:
+// map<KeyType, ValueType> map_field = 1;
+// The parsed descriptor looks like:
+// message MapFieldEntry {
+// option map_entry = true;
+// optional KeyType key = 1;
+// optional ValueType value = 2;
+// }
+// repeated MapFieldEntry map_field = 1;
+//
+// Implementations may choose not to generate the map_entry=true message, but
+// use a native map in the target language to hold the keys and values.
+// The reflection APIs in such implementions still need to work as
+// if the field is a repeated message field.
+//
+// NOTE: Do not set the option in .proto files. Always use the maps syntax
+// instead. The option should only be implicitly set by the proto compiler
+// parser.
+@property(nonatomic, readwrite) BOOL hasMapEntry;
+@property(nonatomic, readwrite) BOOL mapEntry;
+
+// The parser stores options it doesn't recognize here. See above.
+// |uninterpretedOptionArray| contains |GPBUninterpretedOption|
+@property(nonatomic, readwrite, strong) NSMutableArray *uninterpretedOptionArray;
+
+@end
+
+#pragma mark - GPBFieldOptions
+
+typedef GPB_ENUM(GPBFieldOptions_FieldNumber) {
+ GPBFieldOptions_FieldNumber_Ctype = 1,
+ GPBFieldOptions_FieldNumber_Packed = 2,
+ GPBFieldOptions_FieldNumber_Deprecated = 3,
+ GPBFieldOptions_FieldNumber_Lazy = 5,
+ GPBFieldOptions_FieldNumber_Weak = 10,
+ GPBFieldOptions_FieldNumber_UninterpretedOptionArray = 999,
+};
+
+@interface GPBFieldOptions : GPBMessage
+
+// The ctype option instructs the C++ code generator to use a different
+// representation of the field than it normally would. See the specific
+// options below. This option is not yet implemented in the open source
+// release -- sorry, we'll try to include it in a future version!
+@property(nonatomic, readwrite) BOOL hasCtype;
+@property(nonatomic, readwrite) GPBFieldOptions_CType ctype;
+
+// The packed option can be enabled for repeated primitive fields to enable
+// a more efficient representation on the wire. Rather than repeatedly
+// writing the tag and type for each element, the entire array is encoded as
+// a single length-delimited blob.
+@property(nonatomic, readwrite) BOOL hasPacked;
+@property(nonatomic, readwrite) BOOL packed;
+
+// Should this field be parsed lazily? Lazy applies only to message-type
+// fields. It means that when the outer message is initially parsed, the
+// inner message's contents will not be parsed but instead stored in encoded
+// form. The inner message will actually be parsed when it is first accessed.
+//
+// This is only a hint. Implementations are free to choose whether to use
+// eager or lazy parsing regardless of the value of this option. However,
+// setting this option true suggests that the protocol author believes that
+// using lazy parsing on this field is worth the additional bookkeeping
+// overhead typically needed to implement it.
+//
+// This option does not affect the public interface of any generated code;
+// all method signatures remain the same. Furthermore, thread-safety of the
+// interface is not affected by this option; const methods remain safe to
+// call from multiple threads concurrently, while non-const methods continue
+// to require exclusive access.
+//
+//
+// Note that implementations may choose not to check required fields within
+// a lazy sub-message. That is, calling IsInitialized() on the outher message
+// may return true even if the inner message has missing required fields.
+// This is necessary because otherwise the inner message would have to be
+// parsed in order to perform the check, defeating the purpose of lazy
+// parsing. An implementation which chooses not to check required fields
+// must be consistent about it. That is, for any particular sub-message, the
+// implementation must either *always* check its required fields, or *never*
+// check its required fields, regardless of whether or not the message has
+// been parsed.
+@property(nonatomic, readwrite) BOOL hasLazy;
+@property(nonatomic, readwrite) BOOL lazy;
+
+// Is this field deprecated?
+// Depending on the target platform, this can emit Deprecated annotations
+// for accessors, or it will be completely ignored; in the very least, this
+// is a formalization for deprecating fields.
+@property(nonatomic, readwrite) BOOL hasDeprecated;
+@property(nonatomic, readwrite) BOOL deprecated;
+
+// For Google-internal migration only. Do not use.
+@property(nonatomic, readwrite) BOOL hasWeak;
+@property(nonatomic, readwrite) BOOL weak;
+
+// The parser stores options it doesn't recognize here. See above.
+// |uninterpretedOptionArray| contains |GPBUninterpretedOption|
+@property(nonatomic, readwrite, strong) NSMutableArray *uninterpretedOptionArray;
+
+@end
+
+#pragma mark - GPBEnumOptions
+
+typedef GPB_ENUM(GPBEnumOptions_FieldNumber) {
+ GPBEnumOptions_FieldNumber_AllowAlias = 2,
+ GPBEnumOptions_FieldNumber_Deprecated = 3,
+ GPBEnumOptions_FieldNumber_UninterpretedOptionArray = 999,
+};
+
+@interface GPBEnumOptions : GPBMessage
+
+// Set this option to true to allow mapping different tag names to the same
+// value.
+@property(nonatomic, readwrite) BOOL hasAllowAlias;
+@property(nonatomic, readwrite) BOOL allowAlias;
+
+// Is this enum deprecated?
+// Depending on the target platform, this can emit Deprecated annotations
+// for the enum, or it will be completely ignored; in the very least, this
+// is a formalization for deprecating enums.
+@property(nonatomic, readwrite) BOOL hasDeprecated;
+@property(nonatomic, readwrite) BOOL deprecated;
+
+// The parser stores options it doesn't recognize here. See above.
+// |uninterpretedOptionArray| contains |GPBUninterpretedOption|
+@property(nonatomic, readwrite, strong) NSMutableArray *uninterpretedOptionArray;
+
+@end
+
+#pragma mark - GPBEnumValueOptions
+
+typedef GPB_ENUM(GPBEnumValueOptions_FieldNumber) {
+ GPBEnumValueOptions_FieldNumber_Deprecated = 1,
+ GPBEnumValueOptions_FieldNumber_UninterpretedOptionArray = 999,
+};
+
+@interface GPBEnumValueOptions : GPBMessage
+
+// Is this enum value deprecated?
+// Depending on the target platform, this can emit Deprecated annotations
+// for the enum value, or it will be completely ignored; in the very least,
+// this is a formalization for deprecating enum values.
+@property(nonatomic, readwrite) BOOL hasDeprecated;
+@property(nonatomic, readwrite) BOOL deprecated;
+
+// The parser stores options it doesn't recognize here. See above.
+// |uninterpretedOptionArray| contains |GPBUninterpretedOption|
+@property(nonatomic, readwrite, strong) NSMutableArray *uninterpretedOptionArray;
+
+@end
+
+#pragma mark - GPBServiceOptions
+
+typedef GPB_ENUM(GPBServiceOptions_FieldNumber) {
+ GPBServiceOptions_FieldNumber_Deprecated = 33,
+ GPBServiceOptions_FieldNumber_UninterpretedOptionArray = 999,
+};
+
+@interface GPBServiceOptions : GPBMessage
+
+// Is this service deprecated?
+// Depending on the target platform, this can emit Deprecated annotations
+// for the service, or it will be completely ignored; in the very least,
+// this is a formalization for deprecating services.
+@property(nonatomic, readwrite) BOOL hasDeprecated;
+@property(nonatomic, readwrite) BOOL deprecated;
+
+// The parser stores options it doesn't recognize here. See above.
+// |uninterpretedOptionArray| contains |GPBUninterpretedOption|
+@property(nonatomic, readwrite, strong) NSMutableArray *uninterpretedOptionArray;
+
+@end
+
+#pragma mark - GPBMethodOptions
+
+typedef GPB_ENUM(GPBMethodOptions_FieldNumber) {
+ GPBMethodOptions_FieldNumber_Deprecated = 33,
+ GPBMethodOptions_FieldNumber_UninterpretedOptionArray = 999,
+};
+
+@interface GPBMethodOptions : GPBMessage
+
+// Is this method deprecated?
+// Depending on the target platform, this can emit Deprecated annotations
+// for the method, or it will be completely ignored; in the very least,
+// this is a formalization for deprecating methods.
+@property(nonatomic, readwrite) BOOL hasDeprecated;
+@property(nonatomic, readwrite) BOOL deprecated;
+
+// The parser stores options it doesn't recognize here. See above.
+// |uninterpretedOptionArray| contains |GPBUninterpretedOption|
+@property(nonatomic, readwrite, strong) NSMutableArray *uninterpretedOptionArray;
+
+@end
+
+#pragma mark - GPBUninterpretedOption
+
+typedef GPB_ENUM(GPBUninterpretedOption_FieldNumber) {
+ GPBUninterpretedOption_FieldNumber_NameArray = 2,
+ GPBUninterpretedOption_FieldNumber_IdentifierValue = 3,
+ GPBUninterpretedOption_FieldNumber_PositiveIntValue = 4,
+ GPBUninterpretedOption_FieldNumber_NegativeIntValue = 5,
+ GPBUninterpretedOption_FieldNumber_DoubleValue = 6,
+ GPBUninterpretedOption_FieldNumber_StringValue = 7,
+ GPBUninterpretedOption_FieldNumber_AggregateValue = 8,
+};
+
+// A message representing a option the parser does not recognize. This only
+// appears in options protos created by the compiler::Parser class.
+// DescriptorPool resolves these when building Descriptor objects. Therefore,
+// options protos in descriptor objects (e.g. returned by Descriptor::options(),
+// or produced by Descriptor::CopyTo()) will never have UninterpretedOptions
+// in them.
+@interface GPBUninterpretedOption : GPBMessage
+
+// |nameArray| contains |GPBUninterpretedOption_NamePart|
+@property(nonatomic, readwrite, strong) NSMutableArray *nameArray;
+
+// The value of the uninterpreted option, in whatever type the tokenizer
+// identified it as during parsing. Exactly one of these should be set.
+@property(nonatomic, readwrite) BOOL hasIdentifierValue;
+@property(nonatomic, readwrite, copy) NSString *identifierValue;
+
+@property(nonatomic, readwrite) BOOL hasPositiveIntValue;
+@property(nonatomic, readwrite) uint64_t positiveIntValue;
+
+@property(nonatomic, readwrite) BOOL hasNegativeIntValue;
+@property(nonatomic, readwrite) int64_t negativeIntValue;
+
+@property(nonatomic, readwrite) BOOL hasDoubleValue;
+@property(nonatomic, readwrite) double doubleValue;
+
+@property(nonatomic, readwrite) BOOL hasStringValue;
+@property(nonatomic, readwrite, copy) NSData *stringValue;
+
+@property(nonatomic, readwrite) BOOL hasAggregateValue;
+@property(nonatomic, readwrite, copy) NSString *aggregateValue;
+
+@end
+
+#pragma mark - GPBUninterpretedOption_NamePart
+
+typedef GPB_ENUM(GPBUninterpretedOption_NamePart_FieldNumber) {
+ GPBUninterpretedOption_NamePart_FieldNumber_NamePart = 1,
+ GPBUninterpretedOption_NamePart_FieldNumber_IsExtension = 2,
+};
+
+// The name of the uninterpreted option. Each string represents a segment in
+// a dot-separated name. is_extension is true iff a segment represents an
+// extension (denoted with parentheses in options specs in .proto files).
+// E.g.,{ ["foo", false], ["bar.baz", true], ["qux", false] } represents
+// "foo.(bar.baz).qux".
+@interface GPBUninterpretedOption_NamePart : GPBMessage
+
+@property(nonatomic, readwrite) BOOL hasNamePart;
+@property(nonatomic, readwrite, copy) NSString *namePart;
+
+@property(nonatomic, readwrite) BOOL hasIsExtension;
+@property(nonatomic, readwrite) BOOL isExtension;
+
+@end
+
+#pragma mark - GPBSourceCodeInfo
+
+typedef GPB_ENUM(GPBSourceCodeInfo_FieldNumber) {
+ GPBSourceCodeInfo_FieldNumber_LocationArray = 1,
+};
+
+// Encapsulates information about the original source file from which a
+// FileDescriptorProto was generated.
+@interface GPBSourceCodeInfo : GPBMessage
+
+// A Location identifies a piece of source code in a .proto file which
+// corresponds to a particular definition. This information is intended
+// to be useful to IDEs, code indexers, documentation generators, and similar
+// tools.
+//
+// For example, say we have a file like:
+// message Foo {
+// optional string foo = 1;
+// }
+// Let's look at just the field definition:
+// optional string foo = 1;
+// ^ ^^ ^^ ^ ^^^
+// a bc de f ghi
+// We have the following locations:
+// span path represents
+// [a,i) [ 4, 0, 2, 0 ] The whole field definition.
+// [a,b) [ 4, 0, 2, 0, 4 ] The label (optional).
+// [c,d) [ 4, 0, 2, 0, 5 ] The type (string).
+// [e,f) [ 4, 0, 2, 0, 1 ] The name (foo).
+// [g,h) [ 4, 0, 2, 0, 3 ] The number (1).
+//
+// Notes:
+// - A location may refer to a repeated field itself (i.e. not to any
+// particular index within it). This is used whenever a set of elements are
+// logically enclosed in a single code segment. For example, an entire
+// extend block (possibly containing multiple extension definitions) will
+// have an outer location whose path refers to the "extensions" repeated
+// field without an index.
+// - Multiple locations may have the same path. This happens when a single
+// logical declaration is spread out across multiple places. The most
+// obvious example is the "extend" block again -- there may be multiple
+// extend blocks in the same scope, each of which will have the same path.
+// - A location's span is not always a subset of its parent's span. For
+// example, the "extendee" of an extension declaration appears at the
+// beginning of the "extend" block and is shared by all extensions within
+// the block.
+// - Just because a location's span is a subset of some other location's span
+// does not mean that it is a descendent. For example, a "group" defines
+// both a type and a field in a single declaration. Thus, the locations
+// corresponding to the type and field and their components will overlap.
+// - Code which tries to interpret locations should probably be designed to
+// ignore those that it doesn't understand, as more types of locations could
+// be recorded in the future.
+// |locationArray| contains |GPBSourceCodeInfo_Location|
+@property(nonatomic, readwrite, strong) NSMutableArray *locationArray;
+
+@end
+
+#pragma mark - GPBSourceCodeInfo_Location
+
+typedef GPB_ENUM(GPBSourceCodeInfo_Location_FieldNumber) {
+ GPBSourceCodeInfo_Location_FieldNumber_PathArray = 1,
+ GPBSourceCodeInfo_Location_FieldNumber_SpanArray = 2,
+ GPBSourceCodeInfo_Location_FieldNumber_LeadingComments = 3,
+ GPBSourceCodeInfo_Location_FieldNumber_TrailingComments = 4,
+ GPBSourceCodeInfo_Location_FieldNumber_LeadingDetachedCommentsArray = 6,
+};
+
+@interface GPBSourceCodeInfo_Location : GPBMessage
+
+// Identifies which part of the FileDescriptorProto was defined at this
+// location.
+//
+// Each element is a field number or an index. They form a path from
+// the root FileDescriptorProto to the place where the definition. For
+// example, this path:
+// [ 4, 3, 2, 7, 1 ]
+// refers to:
+// file.message_type(3) // 4, 3
+// .field(7) // 2, 7
+// .name() // 1
+// This is because FileDescriptorProto.message_type has field number 4:
+// repeated DescriptorProto message_type = 4;
+// and DescriptorProto.field has field number 2:
+// repeated FieldDescriptorProto field = 2;
+// and FieldDescriptorProto.name has field number 1:
+// optional string name = 1;
+//
+// Thus, the above path gives the location of a field name. If we removed
+// the last element:
+// [ 4, 3, 2, 7 ]
+// this path refers to the whole field declaration (from the beginning
+// of the label to the terminating semicolon).
+@property(nonatomic, readwrite, strong) GPBInt32Array *pathArray;
+
+// Always has exactly three or four elements: start line, start column,
+// end line (optional, otherwise assumed same as start line), end column.
+// These are packed into a single field for efficiency. Note that line
+// and column numbers are zero-based -- typically you will want to add
+// 1 to each before displaying to a user.
+@property(nonatomic, readwrite, strong) GPBInt32Array *spanArray;
+
+// If this SourceCodeInfo represents a complete declaration, these are any
+// comments appearing before and after the declaration which appear to be
+// attached to the declaration.
+//
+// A series of line comments appearing on consecutive lines, with no other
+// tokens appearing on those lines, will be treated as a single comment.
+//
+// leading_detached_comments will keep paragraphs of comments that appear
+// before (but not connected to) the current element. Each paragraph,
+// separated by empty lines, will be one comment element in the repeated
+// field.
+//
+// Only the comment content is provided; comment markers (e.g. //) are
+// stripped out. For block comments, leading whitespace and an asterisk
+// will be stripped from the beginning of each line other than the first.
+// Newlines are included in the output.
+//
+// Examples:
+//
+// optional int32 foo = 1; // Comment attached to foo.
+// // Comment attached to bar.
+// optional int32 bar = 2;
+//
+// optional string baz = 3;
+// // Comment attached to baz.
+// // Another line attached to baz.
+//
+// // Comment attached to qux.
+// //
+// // Another line attached to qux.
+// optional double qux = 4;
+//
+// // Detached comment for corge. This is not leading or trailing comments
+// // to qux or corge because there are blank lines separating it from
+// // both.
+//
+// // Detached comment for corge paragraph 2.
+//
+// optional string corge = 5;
+// /* Block comment attached
+// * to corge. Leading asterisks
+// * will be removed. */
+// /* Block comment attached to
+// * grault. */
+// optional int32 grault = 6;
+//
+// // ignored detached comments.
+@property(nonatomic, readwrite) BOOL hasLeadingComments;
+@property(nonatomic, readwrite, copy) NSString *leadingComments;
+
+@property(nonatomic, readwrite) BOOL hasTrailingComments;
+@property(nonatomic, readwrite, copy) NSString *trailingComments;
+
+// |leadingDetachedCommentsArray| contains |NSString|
+@property(nonatomic, readwrite, strong) NSMutableArray *leadingDetachedCommentsArray;
+
+@end
+
+CF_EXTERN_C_END
diff --git a/objectivec/google/protobuf/Descriptor.pbobjc.m b/objectivec/google/protobuf/Descriptor.pbobjc.m
new file mode 100644
index 00000000..b7d2e64f
--- /dev/null
+++ b/objectivec/google/protobuf/Descriptor.pbobjc.m
@@ -0,0 +1,2205 @@
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: google/protobuf/descriptor.proto
+
+#import "GPBProtocolBuffers_RuntimeSupport.h"
+
+#import "google/protobuf/Descriptor.pbobjc.h"
+
+#pragma mark - GPBDescriptorRoot
+
+@implementation GPBDescriptorRoot
+
+@end
+
+static GPBFileDescriptor *GPBDescriptorRoot_FileDescriptor(void) {
+ // This is called by +initialize so there is no need to worry
+ // about thread safety of the singleton.
+ static GPBFileDescriptor *descriptor = NULL;
+ if (!descriptor) {
+ descriptor = [[GPBFileDescriptor alloc] initWithPackage:@"google.protobuf"
+ syntax:GPBFileSyntaxProto2];
+ }
+ return descriptor;
+}
+
+#pragma mark - GPBFileDescriptorSet
+
+@implementation GPBFileDescriptorSet
+
+@dynamic fileArray;
+
+typedef struct GPBFileDescriptorSet_Storage {
+ uint32_t _has_storage_[1];
+ NSMutableArray *fileArray;
+} GPBFileDescriptorSet_Storage;
+
+// This method is threadsafe because it is initially called
+// in +initialize for each subclass.
++ (GPBDescriptor *)descriptor {
+ static GPBDescriptor *descriptor = NULL;
+ if (!descriptor) {
+ static GPBMessageFieldDescription fields[] = {
+ {
+ .name = "fileArray",
+ .number = GPBFileDescriptorSet_FieldNumber_FileArray,
+ .hasIndex = GPBNoHasBit,
+ .flags = GPBFieldRepeated,
+ .type = GPBTypeMessage,
+ .offset = offsetof(GPBFileDescriptorSet_Storage, fileArray),
+ .defaultValue.valueMessage = nil,
+ .typeSpecific.className = GPBStringifySymbol(GPBFileDescriptorProto),
+ .fieldOptions = NULL,
+ },
+ };
+ descriptor = [GPBDescriptor allocDescriptorForClass:[GPBFileDescriptorSet class]
+ rootClass:[GPBDescriptorRoot class]
+ file:GPBDescriptorRoot_FileDescriptor()
+ fields:fields
+ fieldCount:sizeof(fields) / sizeof(GPBMessageFieldDescription)
+ oneofs:NULL
+ oneofCount:0
+ enums:NULL
+ enumCount:0
+ ranges:NULL
+ rangeCount:0
+ storageSize:sizeof(GPBFileDescriptorSet_Storage)
+ wireFormat:NO];
+ }
+ return descriptor;
+}
+
+@end
+
+#pragma mark - GPBFileDescriptorProto
+
+@implementation GPBFileDescriptorProto
+
+@dynamic hasName, name;
+@dynamic hasPackage, package;
+@dynamic dependencyArray;
+@dynamic publicDependencyArray;
+@dynamic weakDependencyArray;
+@dynamic messageTypeArray;
+@dynamic enumTypeArray;
+@dynamic serviceArray;
+@dynamic extensionArray;
+@dynamic hasOptions, options;
+@dynamic hasSourceCodeInfo, sourceCodeInfo;
+@dynamic hasSyntax, syntax;
+
+typedef struct GPBFileDescriptorProto_Storage {
+ uint32_t _has_storage_[1];
+ NSString *name;
+ NSString *package;
+ NSMutableArray *dependencyArray;
+ NSMutableArray *messageTypeArray;
+ NSMutableArray *enumTypeArray;
+ NSMutableArray *serviceArray;
+ NSMutableArray *extensionArray;
+ GPBFileOptions *options;
+ GPBSourceCodeInfo *sourceCodeInfo;
+ GPBInt32Array *publicDependencyArray;
+ GPBInt32Array *weakDependencyArray;
+ NSString *syntax;
+} GPBFileDescriptorProto_Storage;
+
+// This method is threadsafe because it is initially called
+// in +initialize for each subclass.
++ (GPBDescriptor *)descriptor {
+ static GPBDescriptor *descriptor = NULL;
+ if (!descriptor) {
+ static GPBMessageFieldDescription fields[] = {
+ {
+ .name = "name",
+ .number = GPBFileDescriptorProto_FieldNumber_Name,
+ .hasIndex = 0,
+ .flags = GPBFieldOptional,
+ .type = GPBTypeString,
+ .offset = offsetof(GPBFileDescriptorProto_Storage, name),
+ .defaultValue.valueString = nil,
+ .typeSpecific.className = NULL,
+ .fieldOptions = NULL,
+ },
+ {
+ .name = "package",
+ .number = GPBFileDescriptorProto_FieldNumber_Package,
+ .hasIndex = 1,
+ .flags = GPBFieldOptional,
+ .type = GPBTypeString,
+ .offset = offsetof(GPBFileDescriptorProto_Storage, package),
+ .defaultValue.valueString = nil,
+ .typeSpecific.className = NULL,
+ .fieldOptions = NULL,
+ },
+ {
+ .name = "dependencyArray",
+ .number = GPBFileDescriptorProto_FieldNumber_DependencyArray,
+ .hasIndex = GPBNoHasBit,
+ .flags = GPBFieldRepeated,
+ .type = GPBTypeString,
+ .offset = offsetof(GPBFileDescriptorProto_Storage, dependencyArray),
+ .defaultValue.valueMessage = nil,
+ .typeSpecific.className = NULL,
+ .fieldOptions = NULL,
+ },
+ {
+ .name = "messageTypeArray",
+ .number = GPBFileDescriptorProto_FieldNumber_MessageTypeArray,
+ .hasIndex = GPBNoHasBit,
+ .flags = GPBFieldRepeated,
+ .type = GPBTypeMessage,
+ .offset = offsetof(GPBFileDescriptorProto_Storage, messageTypeArray),
+ .defaultValue.valueMessage = nil,
+ .typeSpecific.className = GPBStringifySymbol(GPBDescriptorProto),
+ .fieldOptions = NULL,
+ },
+ {
+ .name = "enumTypeArray",
+ .number = GPBFileDescriptorProto_FieldNumber_EnumTypeArray,
+ .hasIndex = GPBNoHasBit,
+ .flags = GPBFieldRepeated,
+ .type = GPBTypeMessage,
+ .offset = offsetof(GPBFileDescriptorProto_Storage, enumTypeArray),
+ .defaultValue.valueMessage = nil,
+ .typeSpecific.className = GPBStringifySymbol(GPBEnumDescriptorProto),
+ .fieldOptions = NULL,
+ },
+ {
+ .name = "serviceArray",
+ .number = GPBFileDescriptorProto_FieldNumber_ServiceArray,
+ .hasIndex = GPBNoHasBit,
+ .flags = GPBFieldRepeated,
+ .type = GPBTypeMessage,
+ .offset = offsetof(GPBFileDescriptorProto_Storage, serviceArray),
+ .defaultValue.valueMessage = nil,
+ .typeSpecific.className = GPBStringifySymbol(GPBServiceDescriptorProto),
+ .fieldOptions = NULL,
+ },
+ {
+ .name = "extensionArray",
+ .number = GPBFileDescriptorProto_FieldNumber_ExtensionArray,
+ .hasIndex = GPBNoHasBit,
+ .flags = GPBFieldRepeated,
+ .type = GPBTypeMessage,
+ .offset = offsetof(GPBFileDescriptorProto_Storage, extensionArray),
+ .defaultValue.valueMessage = nil,
+ .typeSpecific.className = GPBStringifySymbol(GPBFieldDescriptorProto),
+ .fieldOptions = NULL,
+ },
+ {
+ .name = "options",
+ .number = GPBFileDescriptorProto_FieldNumber_Options,
+ .hasIndex = 9,
+ .flags = GPBFieldOptional,
+ .type = GPBTypeMessage,
+ .offset = offsetof(GPBFileDescriptorProto_Storage, options),
+ .defaultValue.valueMessage = nil,
+ .typeSpecific.className = GPBStringifySymbol(GPBFileOptions),
+ .fieldOptions = NULL,
+ },
+ {
+ .name = "sourceCodeInfo",
+ .number = GPBFileDescriptorProto_FieldNumber_SourceCodeInfo,
+ .hasIndex = 10,
+ .flags = GPBFieldOptional,
+ .type = GPBTypeMessage,
+ .offset = offsetof(GPBFileDescriptorProto_Storage, sourceCodeInfo),
+ .defaultValue.valueMessage = nil,
+ .typeSpecific.className = GPBStringifySymbol(GPBSourceCodeInfo),
+ .fieldOptions = NULL,
+ },
+ {
+ .name = "publicDependencyArray",
+ .number = GPBFileDescriptorProto_FieldNumber_PublicDependencyArray,
+ .hasIndex = GPBNoHasBit,
+ .flags = GPBFieldRepeated,
+ .type = GPBTypeInt32,
+ .offset = offsetof(GPBFileDescriptorProto_Storage, publicDependencyArray),
+ .defaultValue.valueMessage = nil,
+ .typeSpecific.className = NULL,
+ .fieldOptions = NULL,
+ },
+ {
+ .name = "weakDependencyArray",
+ .number = GPBFileDescriptorProto_FieldNumber_WeakDependencyArray,
+ .hasIndex = GPBNoHasBit,
+ .flags = GPBFieldRepeated,
+ .type = GPBTypeInt32,
+ .offset = offsetof(GPBFileDescriptorProto_Storage, weakDependencyArray),
+ .defaultValue.valueMessage = nil,
+ .typeSpecific.className = NULL,
+ .fieldOptions = NULL,
+ },
+ {
+ .name = "syntax",
+ .number = GPBFileDescriptorProto_FieldNumber_Syntax,
+ .hasIndex = 11,
+ .flags = GPBFieldOptional,
+ .type = GPBTypeString,
+ .offset = offsetof(GPBFileDescriptorProto_Storage, syntax),
+ .defaultValue.valueString = nil,
+ .typeSpecific.className = NULL,
+ .fieldOptions = NULL,
+ },
+ };
+ descriptor = [GPBDescriptor allocDescriptorForClass:[GPBFileDescriptorProto class]
+ rootClass:[GPBDescriptorRoot class]
+ file:GPBDescriptorRoot_FileDescriptor()
+ fields:fields
+ fieldCount:sizeof(fields) / sizeof(GPBMessageFieldDescription)
+ oneofs:NULL
+ oneofCount:0
+ enums:NULL
+ enumCount:0
+ ranges:NULL
+ rangeCount:0
+ storageSize:sizeof(GPBFileDescriptorProto_Storage)
+ wireFormat:NO];
+ }
+ return descriptor;
+}
+
+@end
+
+#pragma mark - GPBDescriptorProto
+
+@implementation GPBDescriptorProto
+
+@dynamic hasName, name;
+@dynamic fieldArray;
+@dynamic extensionArray;
+@dynamic nestedTypeArray;
+@dynamic enumTypeArray;
+@dynamic extensionRangeArray;
+@dynamic oneofDeclArray;
+@dynamic hasOptions, options;
+
+typedef struct GPBDescriptorProto_Storage {
+ uint32_t _has_storage_[1];
+ NSString *name;
+ NSMutableArray *fieldArray;
+ NSMutableArray *nestedTypeArray;
+ NSMutableArray *enumTypeArray;
+ NSMutableArray *extensionRangeArray;
+ NSMutableArray *extensionArray;
+ GPBMessageOptions *options;
+ NSMutableArray *oneofDeclArray;
+} GPBDescriptorProto_Storage;
+
+// This method is threadsafe because it is initially called
+// in +initialize for each subclass.
++ (GPBDescriptor *)descriptor {
+ static GPBDescriptor *descriptor = NULL;
+ if (!descriptor) {
+ static GPBMessageFieldDescription fields[] = {
+ {
+ .name = "name",
+ .number = GPBDescriptorProto_FieldNumber_Name,
+ .hasIndex = 0,
+ .flags = GPBFieldOptional,
+ .type = GPBTypeString,
+ .offset = offsetof(GPBDescriptorProto_Storage, name),
+ .defaultValue.valueString = nil,
+ .typeSpecific.className = NULL,
+ .fieldOptions = NULL,
+ },
+ {
+ .name = "fieldArray",
+ .number = GPBDescriptorProto_FieldNumber_FieldArray,
+ .hasIndex = GPBNoHasBit,
+ .flags = GPBFieldRepeated,
+ .type = GPBTypeMessage,
+ .offset = offsetof(GPBDescriptorProto_Storage, fieldArray),
+ .defaultValue.valueMessage = nil,
+ .typeSpecific.className = GPBStringifySymbol(GPBFieldDescriptorProto),
+ .fieldOptions = NULL,
+ },
+ {
+ .name = "nestedTypeArray",
+ .number = GPBDescriptorProto_FieldNumber_NestedTypeArray,
+ .hasIndex = GPBNoHasBit,
+ .flags = GPBFieldRepeated,
+ .type = GPBTypeMessage,
+ .offset = offsetof(GPBDescriptorProto_Storage, nestedTypeArray),
+ .defaultValue.valueMessage = nil,
+ .typeSpecific.className = GPBStringifySymbol(GPBDescriptorProto),
+ .fieldOptions = NULL,
+ },
+ {
+ .name = "enumTypeArray",
+ .number = GPBDescriptorProto_FieldNumber_EnumTypeArray,
+ .hasIndex = GPBNoHasBit,
+ .flags = GPBFieldRepeated,
+ .type = GPBTypeMessage,
+ .offset = offsetof(GPBDescriptorProto_Storage, enumTypeArray),
+ .defaultValue.valueMessage = nil,
+ .typeSpecific.className = GPBStringifySymbol(GPBEnumDescriptorProto),
+ .fieldOptions = NULL,
+ },
+ {
+ .name = "extensionRangeArray",
+ .number = GPBDescriptorProto_FieldNumber_ExtensionRangeArray,
+ .hasIndex = GPBNoHasBit,
+ .flags = GPBFieldRepeated,
+ .type = GPBTypeMessage,
+ .offset = offsetof(GPBDescriptorProto_Storage, extensionRangeArray),
+ .defaultValue.valueMessage = nil,
+ .typeSpecific.className = GPBStringifySymbol(GPBDescriptorProto_ExtensionRange),
+ .fieldOptions = NULL,
+ },
+ {
+ .name = "extensionArray",
+ .number = GPBDescriptorProto_FieldNumber_ExtensionArray,
+ .hasIndex = GPBNoHasBit,
+ .flags = GPBFieldRepeated,
+ .type = GPBTypeMessage,
+ .offset = offsetof(GPBDescriptorProto_Storage, extensionArray),
+ .defaultValue.valueMessage = nil,
+ .typeSpecific.className = GPBStringifySymbol(GPBFieldDescriptorProto),
+ .fieldOptions = NULL,
+ },
+ {
+ .name = "options",
+ .number = GPBDescriptorProto_FieldNumber_Options,
+ .hasIndex = 7,
+ .flags = GPBFieldOptional,
+ .type = GPBTypeMessage,
+ .offset = offsetof(GPBDescriptorProto_Storage, options),
+ .defaultValue.valueMessage = nil,
+ .typeSpecific.className = GPBStringifySymbol(GPBMessageOptions),
+ .fieldOptions = NULL,
+ },
+ {
+ .name = "oneofDeclArray",
+ .number = GPBDescriptorProto_FieldNumber_OneofDeclArray,
+ .hasIndex = GPBNoHasBit,
+ .flags = GPBFieldRepeated,
+ .type = GPBTypeMessage,
+ .offset = offsetof(GPBDescriptorProto_Storage, oneofDeclArray),
+ .defaultValue.valueMessage = nil,
+ .typeSpecific.className = GPBStringifySymbol(GPBOneofDescriptorProto),
+ .fieldOptions = NULL,
+ },
+ };
+ descriptor = [GPBDescriptor allocDescriptorForClass:[GPBDescriptorProto class]
+ rootClass:[GPBDescriptorRoot class]
+ file:GPBDescriptorRoot_FileDescriptor()
+ fields:fields
+ fieldCount:sizeof(fields) / sizeof(GPBMessageFieldDescription)
+ oneofs:NULL
+ oneofCount:0
+ enums:NULL
+ enumCount:0
+ ranges:NULL
+ rangeCount:0
+ storageSize:sizeof(GPBDescriptorProto_Storage)
+ wireFormat:NO];
+ }
+ return descriptor;
+}
+
+@end
+
+#pragma mark - GPBDescriptorProto_ExtensionRange
+
+@implementation GPBDescriptorProto_ExtensionRange
+
+@dynamic hasStart, start;
+@dynamic hasEnd, end;
+
+typedef struct GPBDescriptorProto_ExtensionRange_Storage {
+ uint32_t _has_storage_[1];
+ int32_t start;
+ int32_t end;
+} GPBDescriptorProto_ExtensionRange_Storage;
+
+// This method is threadsafe because it is initially called
+// in +initialize for each subclass.
++ (GPBDescriptor *)descriptor {
+ static GPBDescriptor *descriptor = NULL;
+ if (!descriptor) {
+ static GPBMessageFieldDescription fields[] = {
+ {
+ .name = "start",
+ .number = GPBDescriptorProto_ExtensionRange_FieldNumber_Start,
+ .hasIndex = 0,
+ .flags = GPBFieldOptional,
+ .type = GPBTypeInt32,
+ .offset = offsetof(GPBDescriptorProto_ExtensionRange_Storage, start),
+ .defaultValue.valueInt32 = 0,
+ .typeSpecific.className = NULL,
+ .fieldOptions = NULL,
+ },
+ {
+ .name = "end",
+ .number = GPBDescriptorProto_ExtensionRange_FieldNumber_End,
+ .hasIndex = 1,
+ .flags = GPBFieldOptional,
+ .type = GPBTypeInt32,
+ .offset = offsetof(GPBDescriptorProto_ExtensionRange_Storage, end),
+ .defaultValue.valueInt32 = 0,
+ .typeSpecific.className = NULL,
+ .fieldOptions = NULL,
+ },
+ };
+ descriptor = [GPBDescriptor allocDescriptorForClass:[GPBDescriptorProto_ExtensionRange class]
+ rootClass:[GPBDescriptorRoot class]
+ file:GPBDescriptorRoot_FileDescriptor()
+ fields:fields
+ fieldCount:sizeof(fields) / sizeof(GPBMessageFieldDescription)
+ oneofs:NULL
+ oneofCount:0
+ enums:NULL
+ enumCount:0
+ ranges:NULL
+ rangeCount:0
+ storageSize:sizeof(GPBDescriptorProto_ExtensionRange_Storage)
+ wireFormat:NO];
+ }
+ return descriptor;
+}
+
+@end
+
+#pragma mark - GPBFieldDescriptorProto
+
+@implementation GPBFieldDescriptorProto
+
+@dynamic hasName, name;
+@dynamic hasNumber, number;
+@dynamic hasLabel, label;
+@dynamic hasType, type;
+@dynamic hasTypeName, typeName;
+@dynamic hasExtendee, extendee;
+@dynamic hasDefaultValue, defaultValue;
+@dynamic hasOneofIndex, oneofIndex;
+@dynamic hasOptions, options;
+
+typedef struct GPBFieldDescriptorProto_Storage {
+ uint32_t _has_storage_[1];
+ int32_t number;
+ GPBFieldDescriptorProto_Label label;
+ GPBFieldDescriptorProto_Type type;
+ int32_t oneofIndex;
+ NSString *name;
+ NSString *extendee;
+ NSString *typeName;
+ NSString *defaultValue;
+ GPBFieldOptions *options;
+} GPBFieldDescriptorProto_Storage;
+
+// This method is threadsafe because it is initially called
+// in +initialize for each subclass.
++ (GPBDescriptor *)descriptor {
+ static GPBDescriptor *descriptor = NULL;
+ if (!descriptor) {
+ static GPBMessageFieldDescription fields[] = {
+ {
+ .name = "name",
+ .number = GPBFieldDescriptorProto_FieldNumber_Name,
+ .hasIndex = 0,
+ .flags = GPBFieldOptional,
+ .type = GPBTypeString,
+ .offset = offsetof(GPBFieldDescriptorProto_Storage, name),
+ .defaultValue.valueString = nil,
+ .typeSpecific.className = NULL,
+ .fieldOptions = NULL,
+ },
+ {
+ .name = "extendee",
+ .number = GPBFieldDescriptorProto_FieldNumber_Extendee,
+ .hasIndex = 5,
+ .flags = GPBFieldOptional,
+ .type = GPBTypeString,
+ .offset = offsetof(GPBFieldDescriptorProto_Storage, extendee),
+ .defaultValue.valueString = nil,
+ .typeSpecific.className = NULL,
+ .fieldOptions = NULL,
+ },
+ {
+ .name = "number",
+ .number = GPBFieldDescriptorProto_FieldNumber_Number,
+ .hasIndex = 1,
+ .flags = GPBFieldOptional,
+ .type = GPBTypeInt32,
+ .offset = offsetof(GPBFieldDescriptorProto_Storage, number),
+ .defaultValue.valueInt32 = 0,
+ .typeSpecific.className = NULL,
+ .fieldOptions = NULL,
+ },
+ {
+ .name = "label",
+ .number = GPBFieldDescriptorProto_FieldNumber_Label,
+ .hasIndex = 2,
+ .flags = GPBFieldOptional | GPBFieldHasEnumDescriptor,
+ .type = GPBTypeEnum,
+ .offset = offsetof(GPBFieldDescriptorProto_Storage, label),
+ .defaultValue.valueEnum = GPBFieldDescriptorProto_Label_LabelOptional,
+ .typeSpecific.enumDescFunc = GPBFieldDescriptorProto_Label_EnumDescriptor,
+ .fieldOptions = NULL,
+ },
+ {
+ .name = "type",
+ .number = GPBFieldDescriptorProto_FieldNumber_Type,
+ .hasIndex = 3,
+ .flags = GPBFieldOptional | GPBFieldHasEnumDescriptor,
+ .type = GPBTypeEnum,
+ .offset = offsetof(GPBFieldDescriptorProto_Storage, type),
+ .defaultValue.valueEnum = GPBFieldDescriptorProto_Type_TypeDouble,
+ .typeSpecific.enumDescFunc = GPBFieldDescriptorProto_Type_EnumDescriptor,
+ .fieldOptions = NULL,
+ },
+ {
+ .name = "typeName",
+ .number = GPBFieldDescriptorProto_FieldNumber_TypeName,
+ .hasIndex = 4,
+ .flags = GPBFieldOptional,
+ .type = GPBTypeString,
+ .offset = offsetof(GPBFieldDescriptorProto_Storage, typeName),
+ .defaultValue.valueString = nil,
+ .typeSpecific.className = NULL,
+ .fieldOptions = NULL,
+ },
+ {
+ .name = "defaultValue",
+ .number = GPBFieldDescriptorProto_FieldNumber_DefaultValue,
+ .hasIndex = 6,
+ .flags = GPBFieldOptional,
+ .type = GPBTypeString,
+ .offset = offsetof(GPBFieldDescriptorProto_Storage, defaultValue),
+ .defaultValue.valueString = nil,
+ .typeSpecific.className = NULL,
+ .fieldOptions = NULL,
+ },
+ {
+ .name = "options",
+ .number = GPBFieldDescriptorProto_FieldNumber_Options,
+ .hasIndex = 8,
+ .flags = GPBFieldOptional,
+ .type = GPBTypeMessage,
+ .offset = offsetof(GPBFieldDescriptorProto_Storage, options),
+ .defaultValue.valueMessage = nil,
+ .typeSpecific.className = GPBStringifySymbol(GPBFieldOptions),
+ .fieldOptions = NULL,
+ },
+ {
+ .name = "oneofIndex",
+ .number = GPBFieldDescriptorProto_FieldNumber_OneofIndex,
+ .hasIndex = 7,
+ .flags = GPBFieldOptional,
+ .type = GPBTypeInt32,
+ .offset = offsetof(GPBFieldDescriptorProto_Storage, oneofIndex),
+ .defaultValue.valueInt32 = 0,
+ .typeSpecific.className = NULL,
+ .fieldOptions = NULL,
+ },
+ };
+ static GPBMessageEnumDescription enums[] = {
+ { .enumDescriptorFunc = GPBFieldDescriptorProto_Type_EnumDescriptor },
+ { .enumDescriptorFunc = GPBFieldDescriptorProto_Label_EnumDescriptor },
+ };
+ descriptor = [GPBDescriptor allocDescriptorForClass:[GPBFieldDescriptorProto class]
+ rootClass:[GPBDescriptorRoot class]
+ file:GPBDescriptorRoot_FileDescriptor()
+ fields:fields
+ fieldCount:sizeof(fields) / sizeof(GPBMessageFieldDescription)
+ oneofs:NULL
+ oneofCount:0
+ enums:enums
+ enumCount:sizeof(enums) / sizeof(GPBMessageEnumDescription)
+ ranges:NULL
+ rangeCount:0
+ storageSize:sizeof(GPBFieldDescriptorProto_Storage)
+ wireFormat:NO];
+ }
+ return descriptor;
+}
+
+@end
+
+#pragma mark - Enum GPBFieldDescriptorProto_Type
+
+GPBEnumDescriptor *GPBFieldDescriptorProto_Type_EnumDescriptor(void) {
+ static GPBEnumDescriptor *descriptor = NULL;
+ if (!descriptor) {
+ static GPBMessageEnumValueDescription values[] = {
+ { .name = "TypeDouble", .number = GPBFieldDescriptorProto_Type_TypeDouble },
+ { .name = "TypeFloat", .number = GPBFieldDescriptorProto_Type_TypeFloat },
+ { .name = "TypeInt64", .number = GPBFieldDescriptorProto_Type_TypeInt64 },
+ { .name = "TypeUint64", .number = GPBFieldDescriptorProto_Type_TypeUint64 },
+ { .name = "TypeInt32", .number = GPBFieldDescriptorProto_Type_TypeInt32 },
+ { .name = "TypeFixed64", .number = GPBFieldDescriptorProto_Type_TypeFixed64 },
+ { .name = "TypeFixed32", .number = GPBFieldDescriptorProto_Type_TypeFixed32 },
+ { .name = "TypeBool", .number = GPBFieldDescriptorProto_Type_TypeBool },
+ { .name = "TypeString", .number = GPBFieldDescriptorProto_Type_TypeString },
+ { .name = "TypeGroup", .number = GPBFieldDescriptorProto_Type_TypeGroup },
+ { .name = "TypeMessage", .number = GPBFieldDescriptorProto_Type_TypeMessage },
+ { .name = "TypeBytes", .number = GPBFieldDescriptorProto_Type_TypeBytes },
+ { .name = "TypeUint32", .number = GPBFieldDescriptorProto_Type_TypeUint32 },
+ { .name = "TypeEnum", .number = GPBFieldDescriptorProto_Type_TypeEnum },
+ { .name = "TypeSfixed32", .number = GPBFieldDescriptorProto_Type_TypeSfixed32 },
+ { .name = "TypeSfixed64", .number = GPBFieldDescriptorProto_Type_TypeSfixed64 },
+ { .name = "TypeSint32", .number = GPBFieldDescriptorProto_Type_TypeSint32 },
+ { .name = "TypeSint64", .number = GPBFieldDescriptorProto_Type_TypeSint64 },
+ };
+ descriptor = [GPBEnumDescriptor allocDescriptorForName:GPBNSStringifySymbol(GPBFieldDescriptorProto_Type)
+ values:values
+ valueCount:sizeof(values) / sizeof(GPBMessageEnumValueDescription)
+ enumVerifier:GPBFieldDescriptorProto_Type_IsValidValue];
+ }
+ return descriptor;
+}
+
+BOOL GPBFieldDescriptorProto_Type_IsValidValue(int32_t value__) {
+ switch (value__) {
+ case GPBFieldDescriptorProto_Type_TypeDouble:
+ case GPBFieldDescriptorProto_Type_TypeFloat:
+ case GPBFieldDescriptorProto_Type_TypeInt64:
+ case GPBFieldDescriptorProto_Type_TypeUint64:
+ case GPBFieldDescriptorProto_Type_TypeInt32:
+ case GPBFieldDescriptorProto_Type_TypeFixed64:
+ case GPBFieldDescriptorProto_Type_TypeFixed32:
+ case GPBFieldDescriptorProto_Type_TypeBool:
+ case GPBFieldDescriptorProto_Type_TypeString:
+ case GPBFieldDescriptorProto_Type_TypeGroup:
+ case GPBFieldDescriptorProto_Type_TypeMessage:
+ case GPBFieldDescriptorProto_Type_TypeBytes:
+ case GPBFieldDescriptorProto_Type_TypeUint32:
+ case GPBFieldDescriptorProto_Type_TypeEnum:
+ case GPBFieldDescriptorProto_Type_TypeSfixed32:
+ case GPBFieldDescriptorProto_Type_TypeSfixed64:
+ case GPBFieldDescriptorProto_Type_TypeSint32:
+ case GPBFieldDescriptorProto_Type_TypeSint64:
+ return YES;
+ default:
+ return NO;
+ }
+}
+
+#pragma mark - Enum GPBFieldDescriptorProto_Label
+
+GPBEnumDescriptor *GPBFieldDescriptorProto_Label_EnumDescriptor(void) {
+ static GPBEnumDescriptor *descriptor = NULL;
+ if (!descriptor) {
+ static GPBMessageEnumValueDescription values[] = {
+ { .name = "LabelOptional", .number = GPBFieldDescriptorProto_Label_LabelOptional },
+ { .name = "LabelRequired", .number = GPBFieldDescriptorProto_Label_LabelRequired },
+ { .name = "LabelRepeated", .number = GPBFieldDescriptorProto_Label_LabelRepeated },
+ };
+ descriptor = [GPBEnumDescriptor allocDescriptorForName:GPBNSStringifySymbol(GPBFieldDescriptorProto_Label)
+ values:values
+ valueCount:sizeof(values) / sizeof(GPBMessageEnumValueDescription)
+ enumVerifier:GPBFieldDescriptorProto_Label_IsValidValue];
+ }
+ return descriptor;
+}
+
+BOOL GPBFieldDescriptorProto_Label_IsValidValue(int32_t value__) {
+ switch (value__) {
+ case GPBFieldDescriptorProto_Label_LabelOptional:
+ case GPBFieldDescriptorProto_Label_LabelRequired:
+ case GPBFieldDescriptorProto_Label_LabelRepeated:
+ return YES;
+ default:
+ return NO;
+ }
+}
+
+#pragma mark - GPBOneofDescriptorProto
+
+@implementation GPBOneofDescriptorProto
+
+@dynamic hasName, name;
+
+typedef struct GPBOneofDescriptorProto_Storage {
+ uint32_t _has_storage_[1];
+ NSString *name;
+} GPBOneofDescriptorProto_Storage;
+
+// This method is threadsafe because it is initially called
+// in +initialize for each subclass.
++ (GPBDescriptor *)descriptor {
+ static GPBDescriptor *descriptor = NULL;
+ if (!descriptor) {
+ static GPBMessageFieldDescription fields[] = {
+ {
+ .name = "name",
+ .number = GPBOneofDescriptorProto_FieldNumber_Name,
+ .hasIndex = 0,
+ .flags = GPBFieldOptional,
+ .type = GPBTypeString,
+ .offset = offsetof(GPBOneofDescriptorProto_Storage, name),
+ .defaultValue.valueString = nil,
+ .typeSpecific.className = NULL,
+ .fieldOptions = NULL,
+ },
+ };
+ descriptor = [GPBDescriptor allocDescriptorForClass:[GPBOneofDescriptorProto class]
+ rootClass:[GPBDescriptorRoot class]
+ file:GPBDescriptorRoot_FileDescriptor()
+ fields:fields
+ fieldCount:sizeof(fields) / sizeof(GPBMessageFieldDescription)
+ oneofs:NULL
+ oneofCount:0
+ enums:NULL
+ enumCount:0
+ ranges:NULL
+ rangeCount:0
+ storageSize:sizeof(GPBOneofDescriptorProto_Storage)
+ wireFormat:NO];
+ }
+ return descriptor;
+}
+
+@end
+
+#pragma mark - GPBEnumDescriptorProto
+
+@implementation GPBEnumDescriptorProto
+
+@dynamic hasName, name;
+@dynamic valueArray;
+@dynamic hasOptions, options;
+
+typedef struct GPBEnumDescriptorProto_Storage {
+ uint32_t _has_storage_[1];
+ NSString *name;
+ NSMutableArray *valueArray;
+ GPBEnumOptions *options;
+} GPBEnumDescriptorProto_Storage;
+
+// This method is threadsafe because it is initially called
+// in +initialize for each subclass.
++ (GPBDescriptor *)descriptor {
+ static GPBDescriptor *descriptor = NULL;
+ if (!descriptor) {
+ static GPBMessageFieldDescription fields[] = {
+ {
+ .name = "name",
+ .number = GPBEnumDescriptorProto_FieldNumber_Name,
+ .hasIndex = 0,
+ .flags = GPBFieldOptional,
+ .type = GPBTypeString,
+ .offset = offsetof(GPBEnumDescriptorProto_Storage, name),
+ .defaultValue.valueString = nil,
+ .typeSpecific.className = NULL,
+ .fieldOptions = NULL,
+ },
+ {
+ .name = "valueArray",
+ .number = GPBEnumDescriptorProto_FieldNumber_ValueArray,
+ .hasIndex = GPBNoHasBit,
+ .flags = GPBFieldRepeated,
+ .type = GPBTypeMessage,
+ .offset = offsetof(GPBEnumDescriptorProto_Storage, valueArray),
+ .defaultValue.valueMessage = nil,
+ .typeSpecific.className = GPBStringifySymbol(GPBEnumValueDescriptorProto),
+ .fieldOptions = NULL,
+ },
+ {
+ .name = "options",
+ .number = GPBEnumDescriptorProto_FieldNumber_Options,
+ .hasIndex = 2,
+ .flags = GPBFieldOptional,
+ .type = GPBTypeMessage,
+ .offset = offsetof(GPBEnumDescriptorProto_Storage, options),
+ .defaultValue.valueMessage = nil,
+ .typeSpecific.className = GPBStringifySymbol(GPBEnumOptions),
+ .fieldOptions = NULL,
+ },
+ };
+ descriptor = [GPBDescriptor allocDescriptorForClass:[GPBEnumDescriptorProto class]
+ rootClass:[GPBDescriptorRoot class]
+ file:GPBDescriptorRoot_FileDescriptor()
+ fields:fields
+ fieldCount:sizeof(fields) / sizeof(GPBMessageFieldDescription)
+ oneofs:NULL
+ oneofCount:0
+ enums:NULL
+ enumCount:0
+ ranges:NULL
+ rangeCount:0
+ storageSize:sizeof(GPBEnumDescriptorProto_Storage)
+ wireFormat:NO];
+ }
+ return descriptor;
+}
+
+@end
+
+#pragma mark - GPBEnumValueDescriptorProto
+
+@implementation GPBEnumValueDescriptorProto
+
+@dynamic hasName, name;
+@dynamic hasNumber, number;
+@dynamic hasOptions, options;
+
+typedef struct GPBEnumValueDescriptorProto_Storage {
+ uint32_t _has_storage_[1];
+ int32_t number;
+ NSString *name;
+ GPBEnumValueOptions *options;
+} GPBEnumValueDescriptorProto_Storage;
+
+// This method is threadsafe because it is initially called
+// in +initialize for each subclass.
++ (GPBDescriptor *)descriptor {
+ static GPBDescriptor *descriptor = NULL;
+ if (!descriptor) {
+ static GPBMessageFieldDescription fields[] = {
+ {
+ .name = "name",
+ .number = GPBEnumValueDescriptorProto_FieldNumber_Name,
+ .hasIndex = 0,
+ .flags = GPBFieldOptional,
+ .type = GPBTypeString,
+ .offset = offsetof(GPBEnumValueDescriptorProto_Storage, name),
+ .defaultValue.valueString = nil,
+ .typeSpecific.className = NULL,
+ .fieldOptions = NULL,
+ },
+ {
+ .name = "number",
+ .number = GPBEnumValueDescriptorProto_FieldNumber_Number,
+ .hasIndex = 1,
+ .flags = GPBFieldOptional,
+ .type = GPBTypeInt32,
+ .offset = offsetof(GPBEnumValueDescriptorProto_Storage, number),
+ .defaultValue.valueInt32 = 0,
+ .typeSpecific.className = NULL,
+ .fieldOptions = NULL,
+ },
+ {
+ .name = "options",
+ .number = GPBEnumValueDescriptorProto_FieldNumber_Options,
+ .hasIndex = 2,
+ .flags = GPBFieldOptional,
+ .type = GPBTypeMessage,
+ .offset = offsetof(GPBEnumValueDescriptorProto_Storage, options),
+ .defaultValue.valueMessage = nil,
+ .typeSpecific.className = GPBStringifySymbol(GPBEnumValueOptions),
+ .fieldOptions = NULL,
+ },
+ };
+ descriptor = [GPBDescriptor allocDescriptorForClass:[GPBEnumValueDescriptorProto class]
+ rootClass:[GPBDescriptorRoot class]
+ file:GPBDescriptorRoot_FileDescriptor()
+ fields:fields
+ fieldCount:sizeof(fields) / sizeof(GPBMessageFieldDescription)
+ oneofs:NULL
+ oneofCount:0
+ enums:NULL
+ enumCount:0
+ ranges:NULL
+ rangeCount:0
+ storageSize:sizeof(GPBEnumValueDescriptorProto_Storage)
+ wireFormat:NO];
+ }
+ return descriptor;
+}
+
+@end
+
+#pragma mark - GPBServiceDescriptorProto
+
+@implementation GPBServiceDescriptorProto
+
+@dynamic hasName, name;
+@dynamic methodArray;
+@dynamic hasOptions, options;
+
+typedef struct GPBServiceDescriptorProto_Storage {
+ uint32_t _has_storage_[1];
+ NSString *name;
+ NSMutableArray *methodArray;
+ GPBServiceOptions *options;
+} GPBServiceDescriptorProto_Storage;
+
+// This method is threadsafe because it is initially called
+// in +initialize for each subclass.
++ (GPBDescriptor *)descriptor {
+ static GPBDescriptor *descriptor = NULL;
+ if (!descriptor) {
+ static GPBMessageFieldDescription fields[] = {
+ {
+ .name = "name",
+ .number = GPBServiceDescriptorProto_FieldNumber_Name,
+ .hasIndex = 0,
+ .flags = GPBFieldOptional,
+ .type = GPBTypeString,
+ .offset = offsetof(GPBServiceDescriptorProto_Storage, name),
+ .defaultValue.valueString = nil,
+ .typeSpecific.className = NULL,
+ .fieldOptions = NULL,
+ },
+ {
+ .name = "methodArray",
+ .number = GPBServiceDescriptorProto_FieldNumber_MethodArray,
+ .hasIndex = GPBNoHasBit,
+ .flags = GPBFieldRepeated,
+ .type = GPBTypeMessage,
+ .offset = offsetof(GPBServiceDescriptorProto_Storage, methodArray),
+ .defaultValue.valueMessage = nil,
+ .typeSpecific.className = GPBStringifySymbol(GPBMethodDescriptorProto),
+ .fieldOptions = NULL,
+ },
+ {
+ .name = "options",
+ .number = GPBServiceDescriptorProto_FieldNumber_Options,
+ .hasIndex = 2,
+ .flags = GPBFieldOptional,
+ .type = GPBTypeMessage,
+ .offset = offsetof(GPBServiceDescriptorProto_Storage, options),
+ .defaultValue.valueMessage = nil,
+ .typeSpecific.className = GPBStringifySymbol(GPBServiceOptions),
+ .fieldOptions = NULL,
+ },
+ };
+ descriptor = [GPBDescriptor allocDescriptorForClass:[GPBServiceDescriptorProto class]
+ rootClass:[GPBDescriptorRoot class]
+ file:GPBDescriptorRoot_FileDescriptor()
+ fields:fields
+ fieldCount:sizeof(fields) / sizeof(GPBMessageFieldDescription)
+ oneofs:NULL
+ oneofCount:0
+ enums:NULL
+ enumCount:0
+ ranges:NULL
+ rangeCount:0
+ storageSize:sizeof(GPBServiceDescriptorProto_Storage)
+ wireFormat:NO];
+ }
+ return descriptor;
+}
+
+@end
+
+#pragma mark - GPBMethodDescriptorProto
+
+@implementation GPBMethodDescriptorProto
+
+@dynamic hasName, name;
+@dynamic hasInputType, inputType;
+@dynamic hasOutputType, outputType;
+@dynamic hasOptions, options;
+@dynamic hasClientStreaming, clientStreaming;
+@dynamic hasServerStreaming, serverStreaming;
+
+typedef struct GPBMethodDescriptorProto_Storage {
+ uint32_t _has_storage_[1];
+ BOOL clientStreaming;
+ BOOL serverStreaming;
+ NSString *name;
+ NSString *inputType;
+ NSString *outputType;
+ GPBMethodOptions *options;
+} GPBMethodDescriptorProto_Storage;
+
+// This method is threadsafe because it is initially called
+// in +initialize for each subclass.
++ (GPBDescriptor *)descriptor {
+ static GPBDescriptor *descriptor = NULL;
+ if (!descriptor) {
+ static GPBMessageFieldDescription fields[] = {
+ {
+ .name = "name",
+ .number = GPBMethodDescriptorProto_FieldNumber_Name,
+ .hasIndex = 0,
+ .flags = GPBFieldOptional,
+ .type = GPBTypeString,
+ .offset = offsetof(GPBMethodDescriptorProto_Storage, name),
+ .defaultValue.valueString = nil,
+ .typeSpecific.className = NULL,
+ .fieldOptions = NULL,
+ },
+ {
+ .name = "inputType",
+ .number = GPBMethodDescriptorProto_FieldNumber_InputType,
+ .hasIndex = 1,
+ .flags = GPBFieldOptional,
+ .type = GPBTypeString,
+ .offset = offsetof(GPBMethodDescriptorProto_Storage, inputType),
+ .defaultValue.valueString = nil,
+ .typeSpecific.className = NULL,
+ .fieldOptions = NULL,
+ },
+ {
+ .name = "outputType",
+ .number = GPBMethodDescriptorProto_FieldNumber_OutputType,
+ .hasIndex = 2,
+ .flags = GPBFieldOptional,
+ .type = GPBTypeString,
+ .offset = offsetof(GPBMethodDescriptorProto_Storage, outputType),
+ .defaultValue.valueString = nil,
+ .typeSpecific.className = NULL,
+ .fieldOptions = NULL,
+ },
+ {
+ .name = "options",
+ .number = GPBMethodDescriptorProto_FieldNumber_Options,
+ .hasIndex = 3,
+ .flags = GPBFieldOptional,
+ .type = GPBTypeMessage,
+ .offset = offsetof(GPBMethodDescriptorProto_Storage, options),
+ .defaultValue.valueMessage = nil,
+ .typeSpecific.className = GPBStringifySymbol(GPBMethodOptions),
+ .fieldOptions = NULL,
+ },
+ {
+ .name = "clientStreaming",
+ .number = GPBMethodDescriptorProto_FieldNumber_ClientStreaming,
+ .hasIndex = 4,
+ .flags = GPBFieldOptional | GPBFieldHasDefaultValue,
+ .type = GPBTypeBool,
+ .offset = offsetof(GPBMethodDescriptorProto_Storage, clientStreaming),
+ .defaultValue.valueBool = NO,
+ .typeSpecific.className = NULL,
+ .fieldOptions = NULL,
+ },
+ {
+ .name = "serverStreaming",
+ .number = GPBMethodDescriptorProto_FieldNumber_ServerStreaming,
+ .hasIndex = 5,
+ .flags = GPBFieldOptional | GPBFieldHasDefaultValue,
+ .type = GPBTypeBool,
+ .offset = offsetof(GPBMethodDescriptorProto_Storage, serverStreaming),
+ .defaultValue.valueBool = NO,
+ .typeSpecific.className = NULL,
+ .fieldOptions = NULL,
+ },
+ };
+ descriptor = [GPBDescriptor allocDescriptorForClass:[GPBMethodDescriptorProto class]
+ rootClass:[GPBDescriptorRoot class]
+ file:GPBDescriptorRoot_FileDescriptor()
+ fields:fields
+ fieldCount:sizeof(fields) / sizeof(GPBMessageFieldDescription)
+ oneofs:NULL
+ oneofCount:0
+ enums:NULL
+ enumCount:0
+ ranges:NULL
+ rangeCount:0
+ storageSize:sizeof(GPBMethodDescriptorProto_Storage)
+ wireFormat:NO];
+ }
+ return descriptor;
+}
+
+@end
+
+#pragma mark - GPBFileOptions
+
+@implementation GPBFileOptions
+
+@dynamic hasJavaPackage, javaPackage;
+@dynamic hasJavaOuterClassname, javaOuterClassname;
+@dynamic hasJavaMultipleFiles, javaMultipleFiles;
+@dynamic hasJavaGenerateEqualsAndHash, javaGenerateEqualsAndHash;
+@dynamic hasJavaStringCheckUtf8, javaStringCheckUtf8;
+@dynamic hasOptimizeFor, optimizeFor;
+@dynamic hasGoPackage, goPackage;
+@dynamic hasCcGenericServices, ccGenericServices;
+@dynamic hasJavaGenericServices, javaGenericServices;
+@dynamic hasPyGenericServices, pyGenericServices;
+@dynamic hasDeprecated, deprecated;
+@dynamic hasCcEnableArenas, ccEnableArenas;
+@dynamic hasObjcClassPrefix, objcClassPrefix;
+@dynamic uninterpretedOptionArray;
+
+typedef struct GPBFileOptions_Storage {
+ uint32_t _has_storage_[1];
+ BOOL javaMultipleFiles;
+ BOOL ccGenericServices;
+ BOOL javaGenericServices;
+ BOOL pyGenericServices;
+ BOOL javaGenerateEqualsAndHash;
+ BOOL deprecated;
+ BOOL javaStringCheckUtf8;
+ BOOL ccEnableArenas;
+ GPBFileOptions_OptimizeMode optimizeFor;
+ NSString *javaPackage;
+ NSString *javaOuterClassname;
+ NSString *goPackage;
+ NSString *objcClassPrefix;
+ NSMutableArray *uninterpretedOptionArray;
+} GPBFileOptions_Storage;
+
+// This method is threadsafe because it is initially called
+// in +initialize for each subclass.
++ (GPBDescriptor *)descriptor {
+ static GPBDescriptor *descriptor = NULL;
+ if (!descriptor) {
+ static GPBMessageFieldDescription fields[] = {
+ {
+ .name = "javaPackage",
+ .number = GPBFileOptions_FieldNumber_JavaPackage,
+ .hasIndex = 0,
+ .flags = GPBFieldOptional,
+ .type = GPBTypeString,
+ .offset = offsetof(GPBFileOptions_Storage, javaPackage),
+ .defaultValue.valueString = nil,
+ .typeSpecific.className = NULL,
+ .fieldOptions = NULL,
+ },
+ {
+ .name = "javaOuterClassname",
+ .number = GPBFileOptions_FieldNumber_JavaOuterClassname,
+ .hasIndex = 1,
+ .flags = GPBFieldOptional,
+ .type = GPBTypeString,
+ .offset = offsetof(GPBFileOptions_Storage, javaOuterClassname),
+ .defaultValue.valueString = nil,
+ .typeSpecific.className = NULL,
+ .fieldOptions = NULL,
+ },
+ {
+ .name = "optimizeFor",
+ .number = GPBFileOptions_FieldNumber_OptimizeFor,
+ .hasIndex = 5,
+ .flags = GPBFieldOptional | GPBFieldHasDefaultValue | GPBFieldHasEnumDescriptor,
+ .type = GPBTypeEnum,
+ .offset = offsetof(GPBFileOptions_Storage, optimizeFor),
+ .defaultValue.valueEnum = GPBFileOptions_OptimizeMode_Speed,
+ .typeSpecific.enumDescFunc = GPBFileOptions_OptimizeMode_EnumDescriptor,
+ .fieldOptions = NULL,
+ },
+ {
+ .name = "javaMultipleFiles",
+ .number = GPBFileOptions_FieldNumber_JavaMultipleFiles,
+ .hasIndex = 2,
+ .flags = GPBFieldOptional | GPBFieldHasDefaultValue,
+ .type = GPBTypeBool,
+ .offset = offsetof(GPBFileOptions_Storage, javaMultipleFiles),
+ .defaultValue.valueBool = NO,
+ .typeSpecific.className = NULL,
+ .fieldOptions = NULL,
+ },
+ {
+ .name = "goPackage",
+ .number = GPBFileOptions_FieldNumber_GoPackage,
+ .hasIndex = 6,
+ .flags = GPBFieldOptional,
+ .type = GPBTypeString,
+ .offset = offsetof(GPBFileOptions_Storage, goPackage),
+ .defaultValue.valueString = nil,
+ .typeSpecific.className = NULL,
+ .fieldOptions = NULL,
+ },
+ {
+ .name = "ccGenericServices",
+ .number = GPBFileOptions_FieldNumber_CcGenericServices,
+ .hasIndex = 7,
+ .flags = GPBFieldOptional | GPBFieldHasDefaultValue,
+ .type = GPBTypeBool,
+ .offset = offsetof(GPBFileOptions_Storage, ccGenericServices),
+ .defaultValue.valueBool = NO,
+ .typeSpecific.className = NULL,
+ .fieldOptions = NULL,
+ },
+ {
+ .name = "javaGenericServices",
+ .number = GPBFileOptions_FieldNumber_JavaGenericServices,
+ .hasIndex = 8,
+ .flags = GPBFieldOptional | GPBFieldHasDefaultValue,
+ .type = GPBTypeBool,
+ .offset = offsetof(GPBFileOptions_Storage, javaGenericServices),
+ .defaultValue.valueBool = NO,
+ .typeSpecific.className = NULL,
+ .fieldOptions = NULL,
+ },
+ {
+ .name = "pyGenericServices",
+ .number = GPBFileOptions_FieldNumber_PyGenericServices,
+ .hasIndex = 9,
+ .flags = GPBFieldOptional | GPBFieldHasDefaultValue,
+ .type = GPBTypeBool,
+ .offset = offsetof(GPBFileOptions_Storage, pyGenericServices),
+ .defaultValue.valueBool = NO,
+ .typeSpecific.className = NULL,
+ .fieldOptions = NULL,
+ },
+ {
+ .name = "javaGenerateEqualsAndHash",
+ .number = GPBFileOptions_FieldNumber_JavaGenerateEqualsAndHash,
+ .hasIndex = 3,
+ .flags = GPBFieldOptional | GPBFieldHasDefaultValue,
+ .type = GPBTypeBool,
+ .offset = offsetof(GPBFileOptions_Storage, javaGenerateEqualsAndHash),
+ .defaultValue.valueBool = NO,
+ .typeSpecific.className = NULL,
+ .fieldOptions = NULL,
+ },
+ {
+ .name = "deprecated",
+ .number = GPBFileOptions_FieldNumber_Deprecated,
+ .hasIndex = 10,
+ .flags = GPBFieldOptional | GPBFieldHasDefaultValue,
+ .type = GPBTypeBool,
+ .offset = offsetof(GPBFileOptions_Storage, deprecated),
+ .defaultValue.valueBool = NO,
+ .typeSpecific.className = NULL,
+ .fieldOptions = NULL,
+ },
+ {
+ .name = "javaStringCheckUtf8",
+ .number = GPBFileOptions_FieldNumber_JavaStringCheckUtf8,
+ .hasIndex = 4,
+ .flags = GPBFieldOptional | GPBFieldHasDefaultValue,
+ .type = GPBTypeBool,
+ .offset = offsetof(GPBFileOptions_Storage, javaStringCheckUtf8),
+ .defaultValue.valueBool = NO,
+ .typeSpecific.className = NULL,
+ .fieldOptions = NULL,
+ },
+ {
+ .name = "ccEnableArenas",
+ .number = GPBFileOptions_FieldNumber_CcEnableArenas,
+ .hasIndex = 11,
+ .flags = GPBFieldOptional | GPBFieldHasDefaultValue,
+ .type = GPBTypeBool,
+ .offset = offsetof(GPBFileOptions_Storage, ccEnableArenas),
+ .defaultValue.valueBool = NO,
+ .typeSpecific.className = NULL,
+ .fieldOptions = NULL,
+ },
+ {
+ .name = "objcClassPrefix",
+ .number = GPBFileOptions_FieldNumber_ObjcClassPrefix,
+ .hasIndex = 12,
+ .flags = GPBFieldOptional,
+ .type = GPBTypeString,
+ .offset = offsetof(GPBFileOptions_Storage, objcClassPrefix),
+ .defaultValue.valueString = nil,
+ .typeSpecific.className = NULL,
+ .fieldOptions = NULL,
+ },
+ {
+ .name = "uninterpretedOptionArray",
+ .number = GPBFileOptions_FieldNumber_UninterpretedOptionArray,
+ .hasIndex = GPBNoHasBit,
+ .flags = GPBFieldRepeated,
+ .type = GPBTypeMessage,
+ .offset = offsetof(GPBFileOptions_Storage, uninterpretedOptionArray),
+ .defaultValue.valueMessage = nil,
+ .typeSpecific.className = GPBStringifySymbol(GPBUninterpretedOption),
+ .fieldOptions = NULL,
+ },
+ };
+ static GPBMessageEnumDescription enums[] = {
+ { .enumDescriptorFunc = GPBFileOptions_OptimizeMode_EnumDescriptor },
+ };
+ static GPBExtensionRange ranges[] = {
+ { .start = 1000, .end = 536870912 },
+ };
+ descriptor = [GPBDescriptor allocDescriptorForClass:[GPBFileOptions class]
+ rootClass:[GPBDescriptorRoot class]
+ file:GPBDescriptorRoot_FileDescriptor()
+ fields:fields
+ fieldCount:sizeof(fields) / sizeof(GPBMessageFieldDescription)
+ oneofs:NULL
+ oneofCount:0
+ enums:enums
+ enumCount:sizeof(enums) / sizeof(GPBMessageEnumDescription)
+ ranges:ranges
+ rangeCount:sizeof(ranges) / sizeof(GPBExtensionRange)
+ storageSize:sizeof(GPBFileOptions_Storage)
+ wireFormat:NO];
+ }
+ return descriptor;
+}
+
+@end
+
+#pragma mark - Enum GPBFileOptions_OptimizeMode
+
+GPBEnumDescriptor *GPBFileOptions_OptimizeMode_EnumDescriptor(void) {
+ static GPBEnumDescriptor *descriptor = NULL;
+ if (!descriptor) {
+ static GPBMessageEnumValueDescription values[] = {
+ { .name = "Speed", .number = GPBFileOptions_OptimizeMode_Speed },
+ { .name = "CodeSize", .number = GPBFileOptions_OptimizeMode_CodeSize },
+ { .name = "LiteRuntime", .number = GPBFileOptions_OptimizeMode_LiteRuntime },
+ };
+ descriptor = [GPBEnumDescriptor allocDescriptorForName:GPBNSStringifySymbol(GPBFileOptions_OptimizeMode)
+ values:values
+ valueCount:sizeof(values) / sizeof(GPBMessageEnumValueDescription)
+ enumVerifier:GPBFileOptions_OptimizeMode_IsValidValue];
+ }
+ return descriptor;
+}
+
+BOOL GPBFileOptions_OptimizeMode_IsValidValue(int32_t value__) {
+ switch (value__) {
+ case GPBFileOptions_OptimizeMode_Speed:
+ case GPBFileOptions_OptimizeMode_CodeSize:
+ case GPBFileOptions_OptimizeMode_LiteRuntime:
+ return YES;
+ default:
+ return NO;
+ }
+}
+
+#pragma mark - GPBMessageOptions
+
+@implementation GPBMessageOptions
+
+@dynamic hasMessageSetWireFormat, messageSetWireFormat;
+@dynamic hasNoStandardDescriptorAccessor, noStandardDescriptorAccessor;
+@dynamic hasDeprecated, deprecated;
+@dynamic hasMapEntry, mapEntry;
+@dynamic uninterpretedOptionArray;
+
+typedef struct GPBMessageOptions_Storage {
+ uint32_t _has_storage_[1];
+ BOOL messageSetWireFormat;
+ BOOL noStandardDescriptorAccessor;
+ BOOL deprecated;
+ BOOL mapEntry;
+ NSMutableArray *uninterpretedOptionArray;
+} GPBMessageOptions_Storage;
+
+// This method is threadsafe because it is initially called
+// in +initialize for each subclass.
++ (GPBDescriptor *)descriptor {
+ static GPBDescriptor *descriptor = NULL;
+ if (!descriptor) {
+ static GPBMessageFieldDescription fields[] = {
+ {
+ .name = "messageSetWireFormat",
+ .number = GPBMessageOptions_FieldNumber_MessageSetWireFormat,
+ .hasIndex = 0,
+ .flags = GPBFieldOptional | GPBFieldHasDefaultValue,
+ .type = GPBTypeBool,
+ .offset = offsetof(GPBMessageOptions_Storage, messageSetWireFormat),
+ .defaultValue.valueBool = NO,
+ .typeSpecific.className = NULL,
+ .fieldOptions = NULL,
+ },
+ {
+ .name = "noStandardDescriptorAccessor",
+ .number = GPBMessageOptions_FieldNumber_NoStandardDescriptorAccessor,
+ .hasIndex = 1,
+ .flags = GPBFieldOptional | GPBFieldHasDefaultValue,
+ .type = GPBTypeBool,
+ .offset = offsetof(GPBMessageOptions_Storage, noStandardDescriptorAccessor),
+ .defaultValue.valueBool = NO,
+ .typeSpecific.className = NULL,
+ .fieldOptions = NULL,
+ },
+ {
+ .name = "deprecated",
+ .number = GPBMessageOptions_FieldNumber_Deprecated,
+ .hasIndex = 2,
+ .flags = GPBFieldOptional | GPBFieldHasDefaultValue,
+ .type = GPBTypeBool,
+ .offset = offsetof(GPBMessageOptions_Storage, deprecated),
+ .defaultValue.valueBool = NO,
+ .typeSpecific.className = NULL,
+ .fieldOptions = NULL,
+ },
+ {
+ .name = "mapEntry",
+ .number = GPBMessageOptions_FieldNumber_MapEntry,
+ .hasIndex = 3,
+ .flags = GPBFieldOptional,
+ .type = GPBTypeBool,
+ .offset = offsetof(GPBMessageOptions_Storage, mapEntry),
+ .defaultValue.valueBool = NO,
+ .typeSpecific.className = NULL,
+ .fieldOptions = NULL,
+ },
+ {
+ .name = "uninterpretedOptionArray",
+ .number = GPBMessageOptions_FieldNumber_UninterpretedOptionArray,
+ .hasIndex = GPBNoHasBit,
+ .flags = GPBFieldRepeated,
+ .type = GPBTypeMessage,
+ .offset = offsetof(GPBMessageOptions_Storage, uninterpretedOptionArray),
+ .defaultValue.valueMessage = nil,
+ .typeSpecific.className = GPBStringifySymbol(GPBUninterpretedOption),
+ .fieldOptions = NULL,
+ },
+ };
+ static GPBExtensionRange ranges[] = {
+ { .start = 1000, .end = 536870912 },
+ };
+ descriptor = [GPBDescriptor allocDescriptorForClass:[GPBMessageOptions class]
+ rootClass:[GPBDescriptorRoot class]
+ file:GPBDescriptorRoot_FileDescriptor()
+ fields:fields
+ fieldCount:sizeof(fields) / sizeof(GPBMessageFieldDescription)
+ oneofs:NULL
+ oneofCount:0
+ enums:NULL
+ enumCount:0
+ ranges:ranges
+ rangeCount:sizeof(ranges) / sizeof(GPBExtensionRange)
+ storageSize:sizeof(GPBMessageOptions_Storage)
+ wireFormat:NO];
+ }
+ return descriptor;
+}
+
+@end
+
+#pragma mark - GPBFieldOptions
+
+@implementation GPBFieldOptions
+
+@dynamic hasCtype, ctype;
+@dynamic hasPacked, packed;
+@dynamic hasLazy, lazy;
+@dynamic hasDeprecated, deprecated;
+@dynamic hasWeak, weak;
+@dynamic uninterpretedOptionArray;
+
+typedef struct GPBFieldOptions_Storage {
+ uint32_t _has_storage_[1];
+ BOOL packed;
+ BOOL deprecated;
+ BOOL lazy;
+ BOOL weak;
+ GPBFieldOptions_CType ctype;
+ NSMutableArray *uninterpretedOptionArray;
+} GPBFieldOptions_Storage;
+
+// This method is threadsafe because it is initially called
+// in +initialize for each subclass.
++ (GPBDescriptor *)descriptor {
+ static GPBDescriptor *descriptor = NULL;
+ if (!descriptor) {
+ static GPBMessageFieldDescription fields[] = {
+ {
+ .name = "ctype",
+ .number = GPBFieldOptions_FieldNumber_Ctype,
+ .hasIndex = 0,
+ .flags = GPBFieldOptional | GPBFieldHasDefaultValue | GPBFieldHasEnumDescriptor,
+ .type = GPBTypeEnum,
+ .offset = offsetof(GPBFieldOptions_Storage, ctype),
+ .defaultValue.valueEnum = GPBFieldOptions_CType_String,
+ .typeSpecific.enumDescFunc = GPBFieldOptions_CType_EnumDescriptor,
+ .fieldOptions = NULL,
+ },
+ {
+ .name = "packed",
+ .number = GPBFieldOptions_FieldNumber_Packed,
+ .hasIndex = 1,
+ .flags = GPBFieldOptional,
+ .type = GPBTypeBool,
+ .offset = offsetof(GPBFieldOptions_Storage, packed),
+ .defaultValue.valueBool = NO,
+ .typeSpecific.className = NULL,
+ .fieldOptions = NULL,
+ },
+ {
+ .name = "deprecated",
+ .number = GPBFieldOptions_FieldNumber_Deprecated,
+ .hasIndex = 3,
+ .flags = GPBFieldOptional | GPBFieldHasDefaultValue,
+ .type = GPBTypeBool,
+ .offset = offsetof(GPBFieldOptions_Storage, deprecated),
+ .defaultValue.valueBool = NO,
+ .typeSpecific.className = NULL,
+ .fieldOptions = NULL,
+ },
+ {
+ .name = "lazy",
+ .number = GPBFieldOptions_FieldNumber_Lazy,
+ .hasIndex = 2,
+ .flags = GPBFieldOptional | GPBFieldHasDefaultValue,
+ .type = GPBTypeBool,
+ .offset = offsetof(GPBFieldOptions_Storage, lazy),
+ .defaultValue.valueBool = NO,
+ .typeSpecific.className = NULL,
+ .fieldOptions = NULL,
+ },
+ {
+ .name = "weak",
+ .number = GPBFieldOptions_FieldNumber_Weak,
+ .hasIndex = 4,
+ .flags = GPBFieldOptional | GPBFieldHasDefaultValue,
+ .type = GPBTypeBool,
+ .offset = offsetof(GPBFieldOptions_Storage, weak),
+ .defaultValue.valueBool = NO,
+ .typeSpecific.className = NULL,
+ .fieldOptions = NULL,
+ },
+ {
+ .name = "uninterpretedOptionArray",
+ .number = GPBFieldOptions_FieldNumber_UninterpretedOptionArray,
+ .hasIndex = GPBNoHasBit,
+ .flags = GPBFieldRepeated,
+ .type = GPBTypeMessage,
+ .offset = offsetof(GPBFieldOptions_Storage, uninterpretedOptionArray),
+ .defaultValue.valueMessage = nil,
+ .typeSpecific.className = GPBStringifySymbol(GPBUninterpretedOption),
+ .fieldOptions = NULL,
+ },
+ };
+ static GPBMessageEnumDescription enums[] = {
+ { .enumDescriptorFunc = GPBFieldOptions_CType_EnumDescriptor },
+ };
+ static GPBExtensionRange ranges[] = {
+ { .start = 1000, .end = 536870912 },
+ };
+ descriptor = [GPBDescriptor allocDescriptorForClass:[GPBFieldOptions class]
+ rootClass:[GPBDescriptorRoot class]
+ file:GPBDescriptorRoot_FileDescriptor()
+ fields:fields
+ fieldCount:sizeof(fields) / sizeof(GPBMessageFieldDescription)
+ oneofs:NULL
+ oneofCount:0
+ enums:enums
+ enumCount:sizeof(enums) / sizeof(GPBMessageEnumDescription)
+ ranges:ranges
+ rangeCount:sizeof(ranges) / sizeof(GPBExtensionRange)
+ storageSize:sizeof(GPBFieldOptions_Storage)
+ wireFormat:NO];
+ }
+ return descriptor;
+}
+
+@end
+
+#pragma mark - Enum GPBFieldOptions_CType
+
+GPBEnumDescriptor *GPBFieldOptions_CType_EnumDescriptor(void) {
+ static GPBEnumDescriptor *descriptor = NULL;
+ if (!descriptor) {
+ static GPBMessageEnumValueDescription values[] = {
+ { .name = "String", .number = GPBFieldOptions_CType_String },
+ { .name = "Cord", .number = GPBFieldOptions_CType_Cord },
+ { .name = "StringPiece", .number = GPBFieldOptions_CType_StringPiece },
+ };
+ descriptor = [GPBEnumDescriptor allocDescriptorForName:GPBNSStringifySymbol(GPBFieldOptions_CType)
+ values:values
+ valueCount:sizeof(values) / sizeof(GPBMessageEnumValueDescription)
+ enumVerifier:GPBFieldOptions_CType_IsValidValue];
+ }
+ return descriptor;
+}
+
+BOOL GPBFieldOptions_CType_IsValidValue(int32_t value__) {
+ switch (value__) {
+ case GPBFieldOptions_CType_String:
+ case GPBFieldOptions_CType_Cord:
+ case GPBFieldOptions_CType_StringPiece:
+ return YES;
+ default:
+ return NO;
+ }
+}
+
+#pragma mark - GPBEnumOptions
+
+@implementation GPBEnumOptions
+
+@dynamic hasAllowAlias, allowAlias;
+@dynamic hasDeprecated, deprecated;
+@dynamic uninterpretedOptionArray;
+
+typedef struct GPBEnumOptions_Storage {
+ uint32_t _has_storage_[1];
+ BOOL allowAlias;
+ BOOL deprecated;
+ NSMutableArray *uninterpretedOptionArray;
+} GPBEnumOptions_Storage;
+
+// This method is threadsafe because it is initially called
+// in +initialize for each subclass.
++ (GPBDescriptor *)descriptor {
+ static GPBDescriptor *descriptor = NULL;
+ if (!descriptor) {
+ static GPBMessageFieldDescription fields[] = {
+ {
+ .name = "allowAlias",
+ .number = GPBEnumOptions_FieldNumber_AllowAlias,
+ .hasIndex = 0,
+ .flags = GPBFieldOptional,
+ .type = GPBTypeBool,
+ .offset = offsetof(GPBEnumOptions_Storage, allowAlias),
+ .defaultValue.valueBool = NO,
+ .typeSpecific.className = NULL,
+ .fieldOptions = NULL,
+ },
+ {
+ .name = "deprecated",
+ .number = GPBEnumOptions_FieldNumber_Deprecated,
+ .hasIndex = 1,
+ .flags = GPBFieldOptional | GPBFieldHasDefaultValue,
+ .type = GPBTypeBool,
+ .offset = offsetof(GPBEnumOptions_Storage, deprecated),
+ .defaultValue.valueBool = NO,
+ .typeSpecific.className = NULL,
+ .fieldOptions = NULL,
+ },
+ {
+ .name = "uninterpretedOptionArray",
+ .number = GPBEnumOptions_FieldNumber_UninterpretedOptionArray,
+ .hasIndex = GPBNoHasBit,
+ .flags = GPBFieldRepeated,
+ .type = GPBTypeMessage,
+ .offset = offsetof(GPBEnumOptions_Storage, uninterpretedOptionArray),
+ .defaultValue.valueMessage = nil,
+ .typeSpecific.className = GPBStringifySymbol(GPBUninterpretedOption),
+ .fieldOptions = NULL,
+ },
+ };
+ static GPBExtensionRange ranges[] = {
+ { .start = 1000, .end = 536870912 },
+ };
+ descriptor = [GPBDescriptor allocDescriptorForClass:[GPBEnumOptions class]
+ rootClass:[GPBDescriptorRoot class]
+ file:GPBDescriptorRoot_FileDescriptor()
+ fields:fields
+ fieldCount:sizeof(fields) / sizeof(GPBMessageFieldDescription)
+ oneofs:NULL
+ oneofCount:0
+ enums:NULL
+ enumCount:0
+ ranges:ranges
+ rangeCount:sizeof(ranges) / sizeof(GPBExtensionRange)
+ storageSize:sizeof(GPBEnumOptions_Storage)
+ wireFormat:NO];
+ }
+ return descriptor;
+}
+
+@end
+
+#pragma mark - GPBEnumValueOptions
+
+@implementation GPBEnumValueOptions
+
+@dynamic hasDeprecated, deprecated;
+@dynamic uninterpretedOptionArray;
+
+typedef struct GPBEnumValueOptions_Storage {
+ uint32_t _has_storage_[1];
+ BOOL deprecated;
+ NSMutableArray *uninterpretedOptionArray;
+} GPBEnumValueOptions_Storage;
+
+// This method is threadsafe because it is initially called
+// in +initialize for each subclass.
++ (GPBDescriptor *)descriptor {
+ static GPBDescriptor *descriptor = NULL;
+ if (!descriptor) {
+ static GPBMessageFieldDescription fields[] = {
+ {
+ .name = "deprecated",
+ .number = GPBEnumValueOptions_FieldNumber_Deprecated,
+ .hasIndex = 0,
+ .flags = GPBFieldOptional | GPBFieldHasDefaultValue,
+ .type = GPBTypeBool,
+ .offset = offsetof(GPBEnumValueOptions_Storage, deprecated),
+ .defaultValue.valueBool = NO,
+ .typeSpecific.className = NULL,
+ .fieldOptions = NULL,
+ },
+ {
+ .name = "uninterpretedOptionArray",
+ .number = GPBEnumValueOptions_FieldNumber_UninterpretedOptionArray,
+ .hasIndex = GPBNoHasBit,
+ .flags = GPBFieldRepeated,
+ .type = GPBTypeMessage,
+ .offset = offsetof(GPBEnumValueOptions_Storage, uninterpretedOptionArray),
+ .defaultValue.valueMessage = nil,
+ .typeSpecific.className = GPBStringifySymbol(GPBUninterpretedOption),
+ .fieldOptions = NULL,
+ },
+ };
+ static GPBExtensionRange ranges[] = {
+ { .start = 1000, .end = 536870912 },
+ };
+ descriptor = [GPBDescriptor allocDescriptorForClass:[GPBEnumValueOptions class]
+ rootClass:[GPBDescriptorRoot class]
+ file:GPBDescriptorRoot_FileDescriptor()
+ fields:fields
+ fieldCount:sizeof(fields) / sizeof(GPBMessageFieldDescription)
+ oneofs:NULL
+ oneofCount:0
+ enums:NULL
+ enumCount:0
+ ranges:ranges
+ rangeCount:sizeof(ranges) / sizeof(GPBExtensionRange)
+ storageSize:sizeof(GPBEnumValueOptions_Storage)
+ wireFormat:NO];
+ }
+ return descriptor;
+}
+
+@end
+
+#pragma mark - GPBServiceOptions
+
+@implementation GPBServiceOptions
+
+@dynamic hasDeprecated, deprecated;
+@dynamic uninterpretedOptionArray;
+
+typedef struct GPBServiceOptions_Storage {
+ uint32_t _has_storage_[1];
+ BOOL deprecated;
+ NSMutableArray *uninterpretedOptionArray;
+} GPBServiceOptions_Storage;
+
+// This method is threadsafe because it is initially called
+// in +initialize for each subclass.
++ (GPBDescriptor *)descriptor {
+ static GPBDescriptor *descriptor = NULL;
+ if (!descriptor) {
+ static GPBMessageFieldDescription fields[] = {
+ {
+ .name = "deprecated",
+ .number = GPBServiceOptions_FieldNumber_Deprecated,
+ .hasIndex = 0,
+ .flags = GPBFieldOptional | GPBFieldHasDefaultValue,
+ .type = GPBTypeBool,
+ .offset = offsetof(GPBServiceOptions_Storage, deprecated),
+ .defaultValue.valueBool = NO,
+ .typeSpecific.className = NULL,
+ .fieldOptions = NULL,
+ },
+ {
+ .name = "uninterpretedOptionArray",
+ .number = GPBServiceOptions_FieldNumber_UninterpretedOptionArray,
+ .hasIndex = GPBNoHasBit,
+ .flags = GPBFieldRepeated,
+ .type = GPBTypeMessage,
+ .offset = offsetof(GPBServiceOptions_Storage, uninterpretedOptionArray),
+ .defaultValue.valueMessage = nil,
+ .typeSpecific.className = GPBStringifySymbol(GPBUninterpretedOption),
+ .fieldOptions = NULL,
+ },
+ };
+ static GPBExtensionRange ranges[] = {
+ { .start = 1000, .end = 536870912 },
+ };
+ descriptor = [GPBDescriptor allocDescriptorForClass:[GPBServiceOptions class]
+ rootClass:[GPBDescriptorRoot class]
+ file:GPBDescriptorRoot_FileDescriptor()
+ fields:fields
+ fieldCount:sizeof(fields) / sizeof(GPBMessageFieldDescription)
+ oneofs:NULL
+ oneofCount:0
+ enums:NULL
+ enumCount:0
+ ranges:ranges
+ rangeCount:sizeof(ranges) / sizeof(GPBExtensionRange)
+ storageSize:sizeof(GPBServiceOptions_Storage)
+ wireFormat:NO];
+ }
+ return descriptor;
+}
+
+@end
+
+#pragma mark - GPBMethodOptions
+
+@implementation GPBMethodOptions
+
+@dynamic hasDeprecated, deprecated;
+@dynamic uninterpretedOptionArray;
+
+typedef struct GPBMethodOptions_Storage {
+ uint32_t _has_storage_[1];
+ BOOL deprecated;
+ NSMutableArray *uninterpretedOptionArray;
+} GPBMethodOptions_Storage;
+
+// This method is threadsafe because it is initially called
+// in +initialize for each subclass.
++ (GPBDescriptor *)descriptor {
+ static GPBDescriptor *descriptor = NULL;
+ if (!descriptor) {
+ static GPBMessageFieldDescription fields[] = {
+ {
+ .name = "deprecated",
+ .number = GPBMethodOptions_FieldNumber_Deprecated,
+ .hasIndex = 0,
+ .flags = GPBFieldOptional | GPBFieldHasDefaultValue,
+ .type = GPBTypeBool,
+ .offset = offsetof(GPBMethodOptions_Storage, deprecated),
+ .defaultValue.valueBool = NO,
+ .typeSpecific.className = NULL,
+ .fieldOptions = NULL,
+ },
+ {
+ .name = "uninterpretedOptionArray",
+ .number = GPBMethodOptions_FieldNumber_UninterpretedOptionArray,
+ .hasIndex = GPBNoHasBit,
+ .flags = GPBFieldRepeated,
+ .type = GPBTypeMessage,
+ .offset = offsetof(GPBMethodOptions_Storage, uninterpretedOptionArray),
+ .defaultValue.valueMessage = nil,
+ .typeSpecific.className = GPBStringifySymbol(GPBUninterpretedOption),
+ .fieldOptions = NULL,
+ },
+ };
+ static GPBExtensionRange ranges[] = {
+ { .start = 1000, .end = 536870912 },
+ };
+ descriptor = [GPBDescriptor allocDescriptorForClass:[GPBMethodOptions class]
+ rootClass:[GPBDescriptorRoot class]
+ file:GPBDescriptorRoot_FileDescriptor()
+ fields:fields
+ fieldCount:sizeof(fields) / sizeof(GPBMessageFieldDescription)
+ oneofs:NULL
+ oneofCount:0
+ enums:NULL
+ enumCount:0
+ ranges:ranges
+ rangeCount:sizeof(ranges) / sizeof(GPBExtensionRange)
+ storageSize:sizeof(GPBMethodOptions_Storage)
+ wireFormat:NO];
+ }
+ return descriptor;
+}
+
+@end
+
+#pragma mark - GPBUninterpretedOption
+
+@implementation GPBUninterpretedOption
+
+@dynamic nameArray;
+@dynamic hasIdentifierValue, identifierValue;
+@dynamic hasPositiveIntValue, positiveIntValue;
+@dynamic hasNegativeIntValue, negativeIntValue;
+@dynamic hasDoubleValue, doubleValue;
+@dynamic hasStringValue, stringValue;
+@dynamic hasAggregateValue, aggregateValue;
+
+typedef struct GPBUninterpretedOption_Storage {
+ uint32_t _has_storage_[1];
+ NSMutableArray *nameArray;
+ NSString *identifierValue;
+ NSData *stringValue;
+ NSString *aggregateValue;
+ uint64_t positiveIntValue;
+ int64_t negativeIntValue;
+ double doubleValue;
+} GPBUninterpretedOption_Storage;
+
+// This method is threadsafe because it is initially called
+// in +initialize for each subclass.
++ (GPBDescriptor *)descriptor {
+ static GPBDescriptor *descriptor = NULL;
+ if (!descriptor) {
+ static GPBMessageFieldDescription fields[] = {
+ {
+ .name = "nameArray",
+ .number = GPBUninterpretedOption_FieldNumber_NameArray,
+ .hasIndex = GPBNoHasBit,
+ .flags = GPBFieldRepeated,
+ .type = GPBTypeMessage,
+ .offset = offsetof(GPBUninterpretedOption_Storage, nameArray),
+ .defaultValue.valueMessage = nil,
+ .typeSpecific.className = GPBStringifySymbol(GPBUninterpretedOption_NamePart),
+ .fieldOptions = NULL,
+ },
+ {
+ .name = "identifierValue",
+ .number = GPBUninterpretedOption_FieldNumber_IdentifierValue,
+ .hasIndex = 1,
+ .flags = GPBFieldOptional,
+ .type = GPBTypeString,
+ .offset = offsetof(GPBUninterpretedOption_Storage, identifierValue),
+ .defaultValue.valueString = nil,
+ .typeSpecific.className = NULL,
+ .fieldOptions = NULL,
+ },
+ {
+ .name = "positiveIntValue",
+ .number = GPBUninterpretedOption_FieldNumber_PositiveIntValue,
+ .hasIndex = 2,
+ .flags = GPBFieldOptional,
+ .type = GPBTypeUInt64,
+ .offset = offsetof(GPBUninterpretedOption_Storage, positiveIntValue),
+ .defaultValue.valueUInt64 = 0ULL,
+ .typeSpecific.className = NULL,
+ .fieldOptions = NULL,
+ },
+ {
+ .name = "negativeIntValue",
+ .number = GPBUninterpretedOption_FieldNumber_NegativeIntValue,
+ .hasIndex = 3,
+ .flags = GPBFieldOptional,
+ .type = GPBTypeInt64,
+ .offset = offsetof(GPBUninterpretedOption_Storage, negativeIntValue),
+ .defaultValue.valueInt64 = 0LL,
+ .typeSpecific.className = NULL,
+ .fieldOptions = NULL,
+ },
+ {
+ .name = "doubleValue",
+ .number = GPBUninterpretedOption_FieldNumber_DoubleValue,
+ .hasIndex = 4,
+ .flags = GPBFieldOptional,
+ .type = GPBTypeDouble,
+ .offset = offsetof(GPBUninterpretedOption_Storage, doubleValue),
+ .defaultValue.valueDouble = 0,
+ .typeSpecific.className = NULL,
+ .fieldOptions = NULL,
+ },
+ {
+ .name = "stringValue",
+ .number = GPBUninterpretedOption_FieldNumber_StringValue,
+ .hasIndex = 5,
+ .flags = GPBFieldOptional,
+ .type = GPBTypeData,
+ .offset = offsetof(GPBUninterpretedOption_Storage, stringValue),
+ .defaultValue.valueData = nil,
+ .typeSpecific.className = NULL,
+ .fieldOptions = NULL,
+ },
+ {
+ .name = "aggregateValue",
+ .number = GPBUninterpretedOption_FieldNumber_AggregateValue,
+ .hasIndex = 6,
+ .flags = GPBFieldOptional,
+ .type = GPBTypeString,
+ .offset = offsetof(GPBUninterpretedOption_Storage, aggregateValue),
+ .defaultValue.valueString = nil,
+ .typeSpecific.className = NULL,
+ .fieldOptions = NULL,
+ },
+ };
+ descriptor = [GPBDescriptor allocDescriptorForClass:[GPBUninterpretedOption class]
+ rootClass:[GPBDescriptorRoot class]
+ file:GPBDescriptorRoot_FileDescriptor()
+ fields:fields
+ fieldCount:sizeof(fields) / sizeof(GPBMessageFieldDescription)
+ oneofs:NULL
+ oneofCount:0
+ enums:NULL
+ enumCount:0
+ ranges:NULL
+ rangeCount:0
+ storageSize:sizeof(GPBUninterpretedOption_Storage)
+ wireFormat:NO];
+ }
+ return descriptor;
+}
+
+@end
+
+#pragma mark - GPBUninterpretedOption_NamePart
+
+@implementation GPBUninterpretedOption_NamePart
+
+@dynamic hasNamePart, namePart;
+@dynamic hasIsExtension, isExtension;
+
+typedef struct GPBUninterpretedOption_NamePart_Storage {
+ uint32_t _has_storage_[1];
+ BOOL isExtension;
+ NSString *namePart;
+} GPBUninterpretedOption_NamePart_Storage;
+
+// This method is threadsafe because it is initially called
+// in +initialize for each subclass.
++ (GPBDescriptor *)descriptor {
+ static GPBDescriptor *descriptor = NULL;
+ if (!descriptor) {
+ static GPBMessageFieldDescription fields[] = {
+ {
+ .name = "namePart",
+ .number = GPBUninterpretedOption_NamePart_FieldNumber_NamePart,
+ .hasIndex = 0,
+ .flags = GPBFieldRequired,
+ .type = GPBTypeString,
+ .offset = offsetof(GPBUninterpretedOption_NamePart_Storage, namePart),
+ .defaultValue.valueString = nil,
+ .typeSpecific.className = NULL,
+ .fieldOptions = NULL,
+ },
+ {
+ .name = "isExtension",
+ .number = GPBUninterpretedOption_NamePart_FieldNumber_IsExtension,
+ .hasIndex = 1,
+ .flags = GPBFieldRequired,
+ .type = GPBTypeBool,
+ .offset = offsetof(GPBUninterpretedOption_NamePart_Storage, isExtension),
+ .defaultValue.valueBool = NO,
+ .typeSpecific.className = NULL,
+ .fieldOptions = NULL,
+ },
+ };
+ descriptor = [GPBDescriptor allocDescriptorForClass:[GPBUninterpretedOption_NamePart class]
+ rootClass:[GPBDescriptorRoot class]
+ file:GPBDescriptorRoot_FileDescriptor()
+ fields:fields
+ fieldCount:sizeof(fields) / sizeof(GPBMessageFieldDescription)
+ oneofs:NULL
+ oneofCount:0
+ enums:NULL
+ enumCount:0
+ ranges:NULL
+ rangeCount:0
+ storageSize:sizeof(GPBUninterpretedOption_NamePart_Storage)
+ wireFormat:NO];
+ }
+ return descriptor;
+}
+
+@end
+
+#pragma mark - GPBSourceCodeInfo
+
+@implementation GPBSourceCodeInfo
+
+@dynamic locationArray;
+
+typedef struct GPBSourceCodeInfo_Storage {
+ uint32_t _has_storage_[1];
+ NSMutableArray *locationArray;
+} GPBSourceCodeInfo_Storage;
+
+// This method is threadsafe because it is initially called
+// in +initialize for each subclass.
++ (GPBDescriptor *)descriptor {
+ static GPBDescriptor *descriptor = NULL;
+ if (!descriptor) {
+ static GPBMessageFieldDescription fields[] = {
+ {
+ .name = "locationArray",
+ .number = GPBSourceCodeInfo_FieldNumber_LocationArray,
+ .hasIndex = GPBNoHasBit,
+ .flags = GPBFieldRepeated,
+ .type = GPBTypeMessage,
+ .offset = offsetof(GPBSourceCodeInfo_Storage, locationArray),
+ .defaultValue.valueMessage = nil,
+ .typeSpecific.className = GPBStringifySymbol(GPBSourceCodeInfo_Location),
+ .fieldOptions = NULL,
+ },
+ };
+ descriptor = [GPBDescriptor allocDescriptorForClass:[GPBSourceCodeInfo class]
+ rootClass:[GPBDescriptorRoot class]
+ file:GPBDescriptorRoot_FileDescriptor()
+ fields:fields
+ fieldCount:sizeof(fields) / sizeof(GPBMessageFieldDescription)
+ oneofs:NULL
+ oneofCount:0
+ enums:NULL
+ enumCount:0
+ ranges:NULL
+ rangeCount:0
+ storageSize:sizeof(GPBSourceCodeInfo_Storage)
+ wireFormat:NO];
+ }
+ return descriptor;
+}
+
+@end
+
+#pragma mark - GPBSourceCodeInfo_Location
+
+@implementation GPBSourceCodeInfo_Location
+
+@dynamic pathArray;
+@dynamic spanArray;
+@dynamic hasLeadingComments, leadingComments;
+@dynamic hasTrailingComments, trailingComments;
+@dynamic leadingDetachedCommentsArray;
+
+typedef struct GPBSourceCodeInfo_Location_Storage {
+ uint32_t _has_storage_[1];
+ GPBInt32Array *pathArray;
+ GPBInt32Array *spanArray;
+ NSString *leadingComments;
+ NSString *trailingComments;
+ NSMutableArray *leadingDetachedCommentsArray;
+} GPBSourceCodeInfo_Location_Storage;
+
+// This method is threadsafe because it is initially called
+// in +initialize for each subclass.
++ (GPBDescriptor *)descriptor {
+ static GPBDescriptor *descriptor = NULL;
+ if (!descriptor) {
+ static GPBMessageFieldDescription fields[] = {
+ {
+ .name = "pathArray",
+ .number = GPBSourceCodeInfo_Location_FieldNumber_PathArray,
+ .hasIndex = GPBNoHasBit,
+ .flags = GPBFieldRepeated | GPBFieldPacked,
+ .type = GPBTypeInt32,
+ .offset = offsetof(GPBSourceCodeInfo_Location_Storage, pathArray),
+ .defaultValue.valueMessage = nil,
+ .typeSpecific.className = NULL,
+ #if GPBOBJC_INCLUDE_FIELD_OPTIONS
+ .fieldOptions = "\000\000\000\002\020\001",
+ #else
+ .fieldOptions = NULL,
+ #endif // GPBOBJC_INCLUDE_FIELD_OPTIONS
+ },
+ {
+ .name = "spanArray",
+ .number = GPBSourceCodeInfo_Location_FieldNumber_SpanArray,
+ .hasIndex = GPBNoHasBit,
+ .flags = GPBFieldRepeated | GPBFieldPacked,
+ .type = GPBTypeInt32,
+ .offset = offsetof(GPBSourceCodeInfo_Location_Storage, spanArray),
+ .defaultValue.valueMessage = nil,
+ .typeSpecific.className = NULL,
+ #if GPBOBJC_INCLUDE_FIELD_OPTIONS
+ .fieldOptions = "\000\000\000\002\020\001",
+ #else
+ .fieldOptions = NULL,
+ #endif // GPBOBJC_INCLUDE_FIELD_OPTIONS
+ },
+ {
+ .name = "leadingComments",
+ .number = GPBSourceCodeInfo_Location_FieldNumber_LeadingComments,
+ .hasIndex = 2,
+ .flags = GPBFieldOptional,
+ .type = GPBTypeString,
+ .offset = offsetof(GPBSourceCodeInfo_Location_Storage, leadingComments),
+ .defaultValue.valueString = nil,
+ .typeSpecific.className = NULL,
+ .fieldOptions = NULL,
+ },
+ {
+ .name = "trailingComments",
+ .number = GPBSourceCodeInfo_Location_FieldNumber_TrailingComments,
+ .hasIndex = 3,
+ .flags = GPBFieldOptional,
+ .type = GPBTypeString,
+ .offset = offsetof(GPBSourceCodeInfo_Location_Storage, trailingComments),
+ .defaultValue.valueString = nil,
+ .typeSpecific.className = NULL,
+ .fieldOptions = NULL,
+ },
+ {
+ .name = "leadingDetachedCommentsArray",
+ .number = GPBSourceCodeInfo_Location_FieldNumber_LeadingDetachedCommentsArray,
+ .hasIndex = GPBNoHasBit,
+ .flags = GPBFieldRepeated,
+ .type = GPBTypeString,
+ .offset = offsetof(GPBSourceCodeInfo_Location_Storage, leadingDetachedCommentsArray),
+ .defaultValue.valueMessage = nil,
+ .typeSpecific.className = NULL,
+ .fieldOptions = NULL,
+ },
+ };
+ descriptor = [GPBDescriptor allocDescriptorForClass:[GPBSourceCodeInfo_Location class]
+ rootClass:[GPBDescriptorRoot class]
+ file:GPBDescriptorRoot_FileDescriptor()
+ fields:fields
+ fieldCount:sizeof(fields) / sizeof(GPBMessageFieldDescription)
+ oneofs:NULL
+ oneofCount:0
+ enums:NULL
+ enumCount:0
+ ranges:NULL
+ rangeCount:0
+ storageSize:sizeof(GPBSourceCodeInfo_Location_Storage)
+ wireFormat:NO];
+ }
+ return descriptor;
+}
+
+@end
+
diff --git a/objectivec/google/protobuf/Duration.pbobjc.h b/objectivec/google/protobuf/Duration.pbobjc.h
new file mode 100644
index 00000000..c452d0bb
--- /dev/null
+++ b/objectivec/google/protobuf/Duration.pbobjc.h
@@ -0,0 +1,83 @@
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: google/protobuf/duration.proto
+
+#import "GPBProtocolBuffers.h"
+
+#if GOOGLE_PROTOBUF_OBJC_GEN_VERSION != 30000
+#error This file was generated by a different version of protoc-gen-objc which is incompatible with your Protocol Buffer sources.
+#endif
+
+CF_EXTERN_C_BEGIN
+
+@class GPBDuration;
+
+
+#pragma mark - GPBDurationRoot
+
+@interface GPBDurationRoot : GPBRootObject
+@end
+
+#pragma mark - GPBDuration
+
+typedef GPB_ENUM(GPBDuration_FieldNumber) {
+ GPBDuration_FieldNumber_Seconds = 1,
+ GPBDuration_FieldNumber_Nanos = 2,
+};
+
+// A Duration represents a signed, fixed-length span of time represented
+// as a count of seconds and fractions of seconds at nanosecond
+// resolution. It is independent of any calendar and concepts like "day"
+// or "month". It is related to Timestamp in that the difference between
+// two Timestamp values is a Duration and it can be added or subtracted
+// from a Timestamp. Range is approximately +-10,000 years.
+//
+// Example 1: Compute Duration from two Timestamps in pseudo code.
+//
+// Timestamp start = ...;
+// Timestamp end = ...;
+// Duration duration = ...;
+//
+// duration.seconds = end.seconds - start.seconds;
+// duration.nanos = end.nanos - start.nanos;
+//
+// if (duration.seconds < 0 && duration.nanos > 0) {
+// duration.seconds += 1;
+// duration.nanos -= 1000000000;
+// } else if (durations.seconds > 0 && duration.nanos < 0) {
+// duration.seconds -= 1;
+// duration.nanos += 1000000000;
+// }
+//
+// Example 2: Compute Timestamp from Timestamp + Duration in pseudo code.
+//
+// Timestamp start = ...;
+// Duration duration = ...;
+// Timestamp end = ...;
+//
+// end.seconds = start.seconds + duration.seconds;
+// end.nanos = start.nanos + duration.nanos;
+//
+// if (end.nanos < 0) {
+// end.seconds -= 1;
+// end.nanos += 1000000000;
+// } else if (end.nanos >= 1000000000) {
+// end.seconds += 1;
+// end.nanos -= 1000000000;
+// }
+@interface GPBDuration : GPBMessage
+
+// Signed seconds of the span of time. Must be from -315,576,000,000
+// to +315,576,000,000 inclusive.
+@property(nonatomic, readwrite) int64_t seconds;
+
+// Signed fractions of a second at nanosecond resolution of the span
+// of time. Durations less than one second are represented with a 0
+// `seconds` field and a positive or negative `nanos` field. For durations
+// of one second or more, a non-zero value for the `nanos` field must be
+// of the same sign as the `seconds` field. Must be from -999,999,999
+// to +999,999,999 inclusive.
+@property(nonatomic, readwrite) int32_t nanos;
+
+@end
+
+CF_EXTERN_C_END
diff --git a/objectivec/google/protobuf/Duration.pbobjc.m b/objectivec/google/protobuf/Duration.pbobjc.m
new file mode 100644
index 00000000..cf0a3064
--- /dev/null
+++ b/objectivec/google/protobuf/Duration.pbobjc.m
@@ -0,0 +1,85 @@
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: google/protobuf/duration.proto
+
+#import "GPBProtocolBuffers_RuntimeSupport.h"
+
+#import "google/protobuf/Duration.pbobjc.h"
+
+#pragma mark - GPBDurationRoot
+
+@implementation GPBDurationRoot
+
+@end
+
+static GPBFileDescriptor *GPBDurationRoot_FileDescriptor(void) {
+ // This is called by +initialize so there is no need to worry
+ // about thread safety of the singleton.
+ static GPBFileDescriptor *descriptor = NULL;
+ if (!descriptor) {
+ descriptor = [[GPBFileDescriptor alloc] initWithPackage:@"google.protobuf"
+ syntax:GPBFileSyntaxProto3];
+ }
+ return descriptor;
+}
+
+#pragma mark - GPBDuration
+
+@implementation GPBDuration
+
+@dynamic seconds;
+@dynamic nanos;
+
+typedef struct GPBDuration_Storage {
+ uint32_t _has_storage_[1];
+ int32_t nanos;
+ int64_t seconds;
+} GPBDuration_Storage;
+
+// This method is threadsafe because it is initially called
+// in +initialize for each subclass.
++ (GPBDescriptor *)descriptor {
+ static GPBDescriptor *descriptor = NULL;
+ if (!descriptor) {
+ static GPBMessageFieldDescription fields[] = {
+ {
+ .name = "seconds",
+ .number = GPBDuration_FieldNumber_Seconds,
+ .hasIndex = 0,
+ .flags = GPBFieldOptional,
+ .type = GPBTypeInt64,
+ .offset = offsetof(GPBDuration_Storage, seconds),
+ .defaultValue.valueInt64 = 0LL,
+ .typeSpecific.className = NULL,
+ .fieldOptions = NULL,
+ },
+ {
+ .name = "nanos",
+ .number = GPBDuration_FieldNumber_Nanos,
+ .hasIndex = 1,
+ .flags = GPBFieldOptional,
+ .type = GPBTypeInt32,
+ .offset = offsetof(GPBDuration_Storage, nanos),
+ .defaultValue.valueInt32 = 0,
+ .typeSpecific.className = NULL,
+ .fieldOptions = NULL,
+ },
+ };
+ descriptor = [GPBDescriptor allocDescriptorForClass:[GPBDuration class]
+ rootClass:[GPBDurationRoot class]
+ file:GPBDurationRoot_FileDescriptor()
+ fields:fields
+ fieldCount:sizeof(fields) / sizeof(GPBMessageFieldDescription)
+ oneofs:NULL
+ oneofCount:0
+ enums:NULL
+ enumCount:0
+ ranges:NULL
+ rangeCount:0
+ storageSize:sizeof(GPBDuration_Storage)
+ wireFormat:NO];
+ }
+ return descriptor;
+}
+
+@end
+
diff --git a/objectivec/google/protobuf/Timestamp.pbobjc.h b/objectivec/google/protobuf/Timestamp.pbobjc.h
new file mode 100644
index 00000000..c9fc9175
--- /dev/null
+++ b/objectivec/google/protobuf/Timestamp.pbobjc.h
@@ -0,0 +1,94 @@
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: google/protobuf/timestamp.proto
+
+#import "GPBProtocolBuffers.h"
+
+#if GOOGLE_PROTOBUF_OBJC_GEN_VERSION != 30000
+#error This file was generated by a different version of protoc-gen-objc which is incompatible with your Protocol Buffer sources.
+#endif
+
+CF_EXTERN_C_BEGIN
+
+@class GPBTimestamp;
+
+
+#pragma mark - GPBTimestampRoot
+
+@interface GPBTimestampRoot : GPBRootObject
+@end
+
+#pragma mark - GPBTimestamp
+
+typedef GPB_ENUM(GPBTimestamp_FieldNumber) {
+ GPBTimestamp_FieldNumber_Seconds = 1,
+ GPBTimestamp_FieldNumber_Nanos = 2,
+};
+
+// A Timestamp represents a point in time independent of any time zone
+// or calendar, represented as seconds and fractions of seconds at
+// nanosecond resolution in UTC Epoch time. It is encoded using the
+// Proleptic Gregorian Calendar which extends the Gregorian calendar
+// backwards to year one. It is encoded assuming all minutes are 60
+// seconds long, i.e. leap seconds are "smeared" so that no leap second
+// table is needed for interpretation. Range is from
+// 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z.
+// By restricting to that range, we ensure that we can convert to
+// and from RFC 3339 date strings.
+// See [https://www.ietf.org/rfc/rfc3339.txt](https://www.ietf.org/rfc/rfc3339.txt).
+//
+// Example 1: Compute Timestamp from POSIX `time()`.
+//
+// Timestamp timestamp;
+// timestamp.set_seconds(time(NULL));
+// timestamp.set_nanos(0);
+//
+// Example 2: Compute Timestamp from POSIX `gettimeofday()`.
+//
+// struct timeval tv;
+// gettimeofday(&tv, NULL);
+//
+// Timestamp timestamp;
+// timestamp.set_seconds(tv.tv_sec);
+// timestamp.set_nanos(tv.tv_usec * 1000);
+//
+// Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`.
+//
+// FILETIME ft;
+// GetSystemTimeAsFileTime(&ft);
+// UINT64 ticks = (((UINT64)ft.dwHighDateTime) << 32) | ft.dwLowDateTime;
+//
+// // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z
+// // is 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z.
+// Timestamp timestamp;
+// timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL));
+// timestamp.set_nanos((INT32) ((ticks % 10000000) * 100));
+//
+// Example 4: Compute Timestamp from Java `System.currentTimeMillis()`.
+//
+// long millis = System.currentTimeMillis();
+//
+// Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000)
+// .setNanos((int) ((millis % 1000) * 1000000)).build();
+//
+// Example 5: Compute Timestamp from Python `datetime.datetime`.
+//
+// now = datetime.datetime.utcnow()
+// seconds = int(time.mktime(now.timetuple()))
+// nanos = now.microsecond * 1000
+// timestamp = Timestamp(seconds=seconds, nanos=nanos)
+@interface GPBTimestamp : GPBMessage
+
+// Represents seconds of UTC time since Unix epoch
+// 1970-01-01T00:00:00Z. Must be from from 0001-01-01T00:00:00Z to
+// 9999-12-31T23:59:59Z inclusive.
+@property(nonatomic, readwrite) int64_t seconds;
+
+// Non-negative fractions of a second at nanosecond resolution. Negative
+// second values with fractions must still have non-negative nanos values
+// that count forward in time. Must be from 0 to 999,999,999
+// inclusive.
+@property(nonatomic, readwrite) int32_t nanos;
+
+@end
+
+CF_EXTERN_C_END
diff --git a/objectivec/google/protobuf/Timestamp.pbobjc.m b/objectivec/google/protobuf/Timestamp.pbobjc.m
new file mode 100644
index 00000000..1c8d3c76
--- /dev/null
+++ b/objectivec/google/protobuf/Timestamp.pbobjc.m
@@ -0,0 +1,85 @@
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: google/protobuf/timestamp.proto
+
+#import "GPBProtocolBuffers_RuntimeSupport.h"
+
+#import "google/protobuf/Timestamp.pbobjc.h"
+
+#pragma mark - GPBTimestampRoot
+
+@implementation GPBTimestampRoot
+
+@end
+
+static GPBFileDescriptor *GPBTimestampRoot_FileDescriptor(void) {
+ // This is called by +initialize so there is no need to worry
+ // about thread safety of the singleton.
+ static GPBFileDescriptor *descriptor = NULL;
+ if (!descriptor) {
+ descriptor = [[GPBFileDescriptor alloc] initWithPackage:@"google.protobuf"
+ syntax:GPBFileSyntaxProto3];
+ }
+ return descriptor;
+}
+
+#pragma mark - GPBTimestamp
+
+@implementation GPBTimestamp
+
+@dynamic seconds;
+@dynamic nanos;
+
+typedef struct GPBTimestamp_Storage {
+ uint32_t _has_storage_[1];
+ int32_t nanos;
+ int64_t seconds;
+} GPBTimestamp_Storage;
+
+// This method is threadsafe because it is initially called
+// in +initialize for each subclass.
++ (GPBDescriptor *)descriptor {
+ static GPBDescriptor *descriptor = NULL;
+ if (!descriptor) {
+ static GPBMessageFieldDescription fields[] = {
+ {
+ .name = "seconds",
+ .number = GPBTimestamp_FieldNumber_Seconds,
+ .hasIndex = 0,
+ .flags = GPBFieldOptional,
+ .type = GPBTypeInt64,
+ .offset = offsetof(GPBTimestamp_Storage, seconds),
+ .defaultValue.valueInt64 = 0LL,
+ .typeSpecific.className = NULL,
+ .fieldOptions = NULL,
+ },
+ {
+ .name = "nanos",
+ .number = GPBTimestamp_FieldNumber_Nanos,
+ .hasIndex = 1,
+ .flags = GPBFieldOptional,
+ .type = GPBTypeInt32,
+ .offset = offsetof(GPBTimestamp_Storage, nanos),
+ .defaultValue.valueInt32 = 0,
+ .typeSpecific.className = NULL,
+ .fieldOptions = NULL,
+ },
+ };
+ descriptor = [GPBDescriptor allocDescriptorForClass:[GPBTimestamp class]
+ rootClass:[GPBTimestampRoot class]
+ file:GPBTimestampRoot_FileDescriptor()
+ fields:fields
+ fieldCount:sizeof(fields) / sizeof(GPBMessageFieldDescription)
+ oneofs:NULL
+ oneofCount:0
+ enums:NULL
+ enumCount:0
+ ranges:NULL
+ rangeCount:0
+ storageSize:sizeof(GPBTimestamp_Storage)
+ wireFormat:NO];
+ }
+ return descriptor;
+}
+
+@end
+