1*1b3f573fSAndroid Build Coastguard Worker // Protocol Buffers - Google's data interchange format 2*1b3f573fSAndroid Build Coastguard Worker // Copyright 2008 Google Inc. All rights reserved. 3*1b3f573fSAndroid Build Coastguard Worker // https://developers.google.com/protocol-buffers/ 4*1b3f573fSAndroid Build Coastguard Worker // 5*1b3f573fSAndroid Build Coastguard Worker // Redistribution and use in source and binary forms, with or without 6*1b3f573fSAndroid Build Coastguard Worker // modification, are permitted provided that the following conditions are 7*1b3f573fSAndroid Build Coastguard Worker // met: 8*1b3f573fSAndroid Build Coastguard Worker // 9*1b3f573fSAndroid Build Coastguard Worker // * Redistributions of source code must retain the above copyright 10*1b3f573fSAndroid Build Coastguard Worker // notice, this list of conditions and the following disclaimer. 11*1b3f573fSAndroid Build Coastguard Worker // * Redistributions in binary form must reproduce the above 12*1b3f573fSAndroid Build Coastguard Worker // copyright notice, this list of conditions and the following disclaimer 13*1b3f573fSAndroid Build Coastguard Worker // in the documentation and/or other materials provided with the 14*1b3f573fSAndroid Build Coastguard Worker // distribution. 15*1b3f573fSAndroid Build Coastguard Worker // * Neither the name of Google Inc. nor the names of its 16*1b3f573fSAndroid Build Coastguard Worker // contributors may be used to endorse or promote products derived from 17*1b3f573fSAndroid Build Coastguard Worker // this software without specific prior written permission. 18*1b3f573fSAndroid Build Coastguard Worker // 19*1b3f573fSAndroid Build Coastguard Worker // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 20*1b3f573fSAndroid Build Coastguard Worker // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 21*1b3f573fSAndroid Build Coastguard Worker // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 22*1b3f573fSAndroid Build Coastguard Worker // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 23*1b3f573fSAndroid Build Coastguard Worker // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 24*1b3f573fSAndroid Build Coastguard Worker // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 25*1b3f573fSAndroid Build Coastguard Worker // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 26*1b3f573fSAndroid Build Coastguard Worker // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 27*1b3f573fSAndroid Build Coastguard Worker // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 28*1b3f573fSAndroid Build Coastguard Worker // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 29*1b3f573fSAndroid Build Coastguard Worker // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30*1b3f573fSAndroid Build Coastguard Worker 31*1b3f573fSAndroid Build Coastguard Worker #import <Foundation/Foundation.h> 32*1b3f573fSAndroid Build Coastguard Worker 33*1b3f573fSAndroid Build Coastguard Worker #import "GPBRuntimeTypes.h" 34*1b3f573fSAndroid Build Coastguard Worker 35*1b3f573fSAndroid Build Coastguard Worker @class GPBEnumDescriptor; 36*1b3f573fSAndroid Build Coastguard Worker @class GPBFieldDescriptor; 37*1b3f573fSAndroid Build Coastguard Worker @class GPBFileDescriptor; 38*1b3f573fSAndroid Build Coastguard Worker @class GPBOneofDescriptor; 39*1b3f573fSAndroid Build Coastguard Worker 40*1b3f573fSAndroid Build Coastguard Worker NS_ASSUME_NONNULL_BEGIN 41*1b3f573fSAndroid Build Coastguard Worker 42*1b3f573fSAndroid Build Coastguard Worker /** Syntax used in the proto file. */ 43*1b3f573fSAndroid Build Coastguard Worker typedef NS_ENUM(uint8_t, GPBFileSyntax) { 44*1b3f573fSAndroid Build Coastguard Worker /** Unknown syntax. */ 45*1b3f573fSAndroid Build Coastguard Worker GPBFileSyntaxUnknown = 0, 46*1b3f573fSAndroid Build Coastguard Worker /** Proto2 syntax. */ 47*1b3f573fSAndroid Build Coastguard Worker GPBFileSyntaxProto2 = 2, 48*1b3f573fSAndroid Build Coastguard Worker /** Proto3 syntax. */ 49*1b3f573fSAndroid Build Coastguard Worker GPBFileSyntaxProto3 = 3, 50*1b3f573fSAndroid Build Coastguard Worker }; 51*1b3f573fSAndroid Build Coastguard Worker 52*1b3f573fSAndroid Build Coastguard Worker /** Type of proto field. */ 53*1b3f573fSAndroid Build Coastguard Worker typedef NS_ENUM(uint8_t, GPBFieldType) { 54*1b3f573fSAndroid Build Coastguard Worker /** Optional/required field. Only valid for proto2 fields. */ 55*1b3f573fSAndroid Build Coastguard Worker GPBFieldTypeSingle, 56*1b3f573fSAndroid Build Coastguard Worker /** Repeated field. */ 57*1b3f573fSAndroid Build Coastguard Worker GPBFieldTypeRepeated, 58*1b3f573fSAndroid Build Coastguard Worker /** Map field. */ 59*1b3f573fSAndroid Build Coastguard Worker GPBFieldTypeMap, 60*1b3f573fSAndroid Build Coastguard Worker }; 61*1b3f573fSAndroid Build Coastguard Worker 62*1b3f573fSAndroid Build Coastguard Worker /** 63*1b3f573fSAndroid Build Coastguard Worker * Describes a proto message. 64*1b3f573fSAndroid Build Coastguard Worker **/ 65*1b3f573fSAndroid Build Coastguard Worker @interface GPBDescriptor : NSObject<NSCopying> 66*1b3f573fSAndroid Build Coastguard Worker 67*1b3f573fSAndroid Build Coastguard Worker /** Name of the message. */ 68*1b3f573fSAndroid Build Coastguard Worker @property(nonatomic, readonly, copy) NSString *name; 69*1b3f573fSAndroid Build Coastguard Worker /** Fields declared in the message. */ 70*1b3f573fSAndroid Build Coastguard Worker @property(nonatomic, readonly, strong, nullable) NSArray<GPBFieldDescriptor*> *fields; 71*1b3f573fSAndroid Build Coastguard Worker /** Oneofs declared in the message. */ 72*1b3f573fSAndroid Build Coastguard Worker @property(nonatomic, readonly, strong, nullable) NSArray<GPBOneofDescriptor*> *oneofs; 73*1b3f573fSAndroid Build Coastguard Worker /** Extension range declared for the message. */ 74*1b3f573fSAndroid Build Coastguard Worker @property(nonatomic, readonly, nullable) const GPBExtensionRange *extensionRanges; 75*1b3f573fSAndroid Build Coastguard Worker /** Number of extension ranges declared for the message. */ 76*1b3f573fSAndroid Build Coastguard Worker @property(nonatomic, readonly) uint32_t extensionRangesCount; 77*1b3f573fSAndroid Build Coastguard Worker /** Descriptor for the file where the message was defined. */ 78*1b3f573fSAndroid Build Coastguard Worker @property(nonatomic, readonly) GPBFileDescriptor *file; 79*1b3f573fSAndroid Build Coastguard Worker 80*1b3f573fSAndroid Build Coastguard Worker /** Whether the message is in wire format or not. */ 81*1b3f573fSAndroid Build Coastguard Worker @property(nonatomic, readonly, getter=isWireFormat) BOOL wireFormat; 82*1b3f573fSAndroid Build Coastguard Worker /** The class of this message. */ 83*1b3f573fSAndroid Build Coastguard Worker @property(nonatomic, readonly) Class messageClass; 84*1b3f573fSAndroid Build Coastguard Worker /** Containing message descriptor if this message is nested, or nil otherwise. */ 85*1b3f573fSAndroid Build Coastguard Worker @property(readonly, nullable) GPBDescriptor *containingType; 86*1b3f573fSAndroid Build Coastguard Worker /** 87*1b3f573fSAndroid Build Coastguard Worker * Fully qualified name for this message (package.message). Can be nil if the 88*1b3f573fSAndroid Build Coastguard Worker * value is unable to be computed. 89*1b3f573fSAndroid Build Coastguard Worker */ 90*1b3f573fSAndroid Build Coastguard Worker @property(readonly, nullable) NSString *fullName; 91*1b3f573fSAndroid Build Coastguard Worker 92*1b3f573fSAndroid Build Coastguard Worker /** 93*1b3f573fSAndroid Build Coastguard Worker * Gets the field for the given number. 94*1b3f573fSAndroid Build Coastguard Worker * 95*1b3f573fSAndroid Build Coastguard Worker * @param fieldNumber The number for the field to get. 96*1b3f573fSAndroid Build Coastguard Worker * 97*1b3f573fSAndroid Build Coastguard Worker * @return The field descriptor for the given number, or nil if not found. 98*1b3f573fSAndroid Build Coastguard Worker **/ 99*1b3f573fSAndroid Build Coastguard Worker - (nullable GPBFieldDescriptor *)fieldWithNumber:(uint32_t)fieldNumber; 100*1b3f573fSAndroid Build Coastguard Worker 101*1b3f573fSAndroid Build Coastguard Worker /** 102*1b3f573fSAndroid Build Coastguard Worker * Gets the field for the given name. 103*1b3f573fSAndroid Build Coastguard Worker * 104*1b3f573fSAndroid Build Coastguard Worker * @param name The name for the field to get. 105*1b3f573fSAndroid Build Coastguard Worker * 106*1b3f573fSAndroid Build Coastguard Worker * @return The field descriptor for the given name, or nil if not found. 107*1b3f573fSAndroid Build Coastguard Worker **/ 108*1b3f573fSAndroid Build Coastguard Worker - (nullable GPBFieldDescriptor *)fieldWithName:(NSString *)name; 109*1b3f573fSAndroid Build Coastguard Worker 110*1b3f573fSAndroid Build Coastguard Worker /** 111*1b3f573fSAndroid Build Coastguard Worker * Gets the oneof for the given name. 112*1b3f573fSAndroid Build Coastguard Worker * 113*1b3f573fSAndroid Build Coastguard Worker * @param name The name for the oneof to get. 114*1b3f573fSAndroid Build Coastguard Worker * 115*1b3f573fSAndroid Build Coastguard Worker * @return The oneof descriptor for the given name, or nil if not found. 116*1b3f573fSAndroid Build Coastguard Worker **/ 117*1b3f573fSAndroid Build Coastguard Worker - (nullable GPBOneofDescriptor *)oneofWithName:(NSString *)name; 118*1b3f573fSAndroid Build Coastguard Worker 119*1b3f573fSAndroid Build Coastguard Worker @end 120*1b3f573fSAndroid Build Coastguard Worker 121*1b3f573fSAndroid Build Coastguard Worker /** 122*1b3f573fSAndroid Build Coastguard Worker * Describes a proto file. 123*1b3f573fSAndroid Build Coastguard Worker **/ 124*1b3f573fSAndroid Build Coastguard Worker @interface GPBFileDescriptor : NSObject 125*1b3f573fSAndroid Build Coastguard Worker 126*1b3f573fSAndroid Build Coastguard Worker /** The package declared in the proto file. */ 127*1b3f573fSAndroid Build Coastguard Worker @property(nonatomic, readonly, copy) NSString *package; 128*1b3f573fSAndroid Build Coastguard Worker /** The objc prefix declared in the proto file. */ 129*1b3f573fSAndroid Build Coastguard Worker @property(nonatomic, readonly, copy, nullable) NSString *objcPrefix; 130*1b3f573fSAndroid Build Coastguard Worker /** The syntax of the proto file. */ 131*1b3f573fSAndroid Build Coastguard Worker @property(nonatomic, readonly) GPBFileSyntax syntax; 132*1b3f573fSAndroid Build Coastguard Worker 133*1b3f573fSAndroid Build Coastguard Worker @end 134*1b3f573fSAndroid Build Coastguard Worker 135*1b3f573fSAndroid Build Coastguard Worker /** 136*1b3f573fSAndroid Build Coastguard Worker * Describes a oneof field. 137*1b3f573fSAndroid Build Coastguard Worker **/ 138*1b3f573fSAndroid Build Coastguard Worker @interface GPBOneofDescriptor : NSObject 139*1b3f573fSAndroid Build Coastguard Worker /** Name of the oneof field. */ 140*1b3f573fSAndroid Build Coastguard Worker @property(nonatomic, readonly) NSString *name; 141*1b3f573fSAndroid Build Coastguard Worker /** Fields declared in the oneof. */ 142*1b3f573fSAndroid Build Coastguard Worker @property(nonatomic, readonly) NSArray<GPBFieldDescriptor*> *fields; 143*1b3f573fSAndroid Build Coastguard Worker 144*1b3f573fSAndroid Build Coastguard Worker /** 145*1b3f573fSAndroid Build Coastguard Worker * Gets the field for the given number. 146*1b3f573fSAndroid Build Coastguard Worker * 147*1b3f573fSAndroid Build Coastguard Worker * @param fieldNumber The number for the field to get. 148*1b3f573fSAndroid Build Coastguard Worker * 149*1b3f573fSAndroid Build Coastguard Worker * @return The field descriptor for the given number, or nil if not found. 150*1b3f573fSAndroid Build Coastguard Worker **/ 151*1b3f573fSAndroid Build Coastguard Worker - (nullable GPBFieldDescriptor *)fieldWithNumber:(uint32_t)fieldNumber; 152*1b3f573fSAndroid Build Coastguard Worker 153*1b3f573fSAndroid Build Coastguard Worker /** 154*1b3f573fSAndroid Build Coastguard Worker * Gets the field for the given name. 155*1b3f573fSAndroid Build Coastguard Worker * 156*1b3f573fSAndroid Build Coastguard Worker * @param name The name for the field to get. 157*1b3f573fSAndroid Build Coastguard Worker * 158*1b3f573fSAndroid Build Coastguard Worker * @return The field descriptor for the given name, or nil if not found. 159*1b3f573fSAndroid Build Coastguard Worker **/ 160*1b3f573fSAndroid Build Coastguard Worker - (nullable GPBFieldDescriptor *)fieldWithName:(NSString *)name; 161*1b3f573fSAndroid Build Coastguard Worker 162*1b3f573fSAndroid Build Coastguard Worker @end 163*1b3f573fSAndroid Build Coastguard Worker 164*1b3f573fSAndroid Build Coastguard Worker /** 165*1b3f573fSAndroid Build Coastguard Worker * Describes a proto field. 166*1b3f573fSAndroid Build Coastguard Worker **/ 167*1b3f573fSAndroid Build Coastguard Worker @interface GPBFieldDescriptor : NSObject 168*1b3f573fSAndroid Build Coastguard Worker 169*1b3f573fSAndroid Build Coastguard Worker /** Name of the field. */ 170*1b3f573fSAndroid Build Coastguard Worker @property(nonatomic, readonly, copy) NSString *name; 171*1b3f573fSAndroid Build Coastguard Worker /** Number associated with the field. */ 172*1b3f573fSAndroid Build Coastguard Worker @property(nonatomic, readonly) uint32_t number; 173*1b3f573fSAndroid Build Coastguard Worker /** Data type contained in the field. */ 174*1b3f573fSAndroid Build Coastguard Worker @property(nonatomic, readonly) GPBDataType dataType; 175*1b3f573fSAndroid Build Coastguard Worker /** Whether it has a default value or not. */ 176*1b3f573fSAndroid Build Coastguard Worker @property(nonatomic, readonly) BOOL hasDefaultValue; 177*1b3f573fSAndroid Build Coastguard Worker /** Default value for the field. */ 178*1b3f573fSAndroid Build Coastguard Worker @property(nonatomic, readonly) GPBGenericValue defaultValue; 179*1b3f573fSAndroid Build Coastguard Worker /** Whether this field is required. Only valid for proto2 fields. */ 180*1b3f573fSAndroid Build Coastguard Worker @property(nonatomic, readonly, getter=isRequired) BOOL required; 181*1b3f573fSAndroid Build Coastguard Worker /** Whether this field is optional. */ 182*1b3f573fSAndroid Build Coastguard Worker @property(nonatomic, readonly, getter=isOptional) BOOL optional; 183*1b3f573fSAndroid Build Coastguard Worker /** Type of field (single, repeated, map). */ 184*1b3f573fSAndroid Build Coastguard Worker @property(nonatomic, readonly) GPBFieldType fieldType; 185*1b3f573fSAndroid Build Coastguard Worker /** Type of the key if the field is a map. The value's type is -dataType. */ 186*1b3f573fSAndroid Build Coastguard Worker @property(nonatomic, readonly) GPBDataType mapKeyDataType; 187*1b3f573fSAndroid Build Coastguard Worker /** Whether the field is packable. */ 188*1b3f573fSAndroid Build Coastguard Worker @property(nonatomic, readonly, getter=isPackable) BOOL packable; 189*1b3f573fSAndroid Build Coastguard Worker 190*1b3f573fSAndroid Build Coastguard Worker /** The containing oneof if this field is part of one, nil otherwise. */ 191*1b3f573fSAndroid Build Coastguard Worker @property(nonatomic, readonly, nullable) GPBOneofDescriptor *containingOneof; 192*1b3f573fSAndroid Build Coastguard Worker 193*1b3f573fSAndroid Build Coastguard Worker /** Class of the message if the field is of message type. */ 194*1b3f573fSAndroid Build Coastguard Worker @property(nonatomic, readonly, nullable) Class msgClass; 195*1b3f573fSAndroid Build Coastguard Worker 196*1b3f573fSAndroid Build Coastguard Worker /** Descriptor for the enum if this field is an enum. */ 197*1b3f573fSAndroid Build Coastguard Worker @property(nonatomic, readonly, strong, nullable) GPBEnumDescriptor *enumDescriptor; 198*1b3f573fSAndroid Build Coastguard Worker 199*1b3f573fSAndroid Build Coastguard Worker /** 200*1b3f573fSAndroid Build Coastguard Worker * Checks whether the given enum raw value is a valid enum value. 201*1b3f573fSAndroid Build Coastguard Worker * 202*1b3f573fSAndroid Build Coastguard Worker * @param value The raw enum value to check. 203*1b3f573fSAndroid Build Coastguard Worker * 204*1b3f573fSAndroid Build Coastguard Worker * @return YES if value is a valid enum raw value. 205*1b3f573fSAndroid Build Coastguard Worker **/ 206*1b3f573fSAndroid Build Coastguard Worker - (BOOL)isValidEnumValue:(int32_t)value; 207*1b3f573fSAndroid Build Coastguard Worker 208*1b3f573fSAndroid Build Coastguard Worker /** @return Name for the text format, or nil if not known. */ 209*1b3f573fSAndroid Build Coastguard Worker - (nullable NSString *)textFormatName; 210*1b3f573fSAndroid Build Coastguard Worker 211*1b3f573fSAndroid Build Coastguard Worker @end 212*1b3f573fSAndroid Build Coastguard Worker 213*1b3f573fSAndroid Build Coastguard Worker /** 214*1b3f573fSAndroid Build Coastguard Worker * Describes a proto enum. 215*1b3f573fSAndroid Build Coastguard Worker **/ 216*1b3f573fSAndroid Build Coastguard Worker @interface GPBEnumDescriptor : NSObject 217*1b3f573fSAndroid Build Coastguard Worker 218*1b3f573fSAndroid Build Coastguard Worker /** Name of the enum. */ 219*1b3f573fSAndroid Build Coastguard Worker @property(nonatomic, readonly, copy) NSString *name; 220*1b3f573fSAndroid Build Coastguard Worker /** Function that validates that raw values are valid enum values. */ 221*1b3f573fSAndroid Build Coastguard Worker @property(nonatomic, readonly) GPBEnumValidationFunc enumVerifier; 222*1b3f573fSAndroid Build Coastguard Worker 223*1b3f573fSAndroid Build Coastguard Worker /** 224*1b3f573fSAndroid Build Coastguard Worker * Returns the enum value name for the given raw enum. 225*1b3f573fSAndroid Build Coastguard Worker * 226*1b3f573fSAndroid Build Coastguard Worker * Note that there can be more than one name corresponding to a given value 227*1b3f573fSAndroid Build Coastguard Worker * if the allow_alias option is used. 228*1b3f573fSAndroid Build Coastguard Worker * 229*1b3f573fSAndroid Build Coastguard Worker * @param number The raw enum value. 230*1b3f573fSAndroid Build Coastguard Worker * 231*1b3f573fSAndroid Build Coastguard Worker * @return The first name that matches the enum value passed, or nil if not valid. 232*1b3f573fSAndroid Build Coastguard Worker **/ 233*1b3f573fSAndroid Build Coastguard Worker - (nullable NSString *)enumNameForValue:(int32_t)number; 234*1b3f573fSAndroid Build Coastguard Worker 235*1b3f573fSAndroid Build Coastguard Worker /** 236*1b3f573fSAndroid Build Coastguard Worker * Gets the enum raw value for the given enum name. 237*1b3f573fSAndroid Build Coastguard Worker * 238*1b3f573fSAndroid Build Coastguard Worker * @param outValue A pointer where the value will be set. 239*1b3f573fSAndroid Build Coastguard Worker * @param name The enum name for which to get the raw value. 240*1b3f573fSAndroid Build Coastguard Worker * 241*1b3f573fSAndroid Build Coastguard Worker * @return YES if a value was copied into the pointer, NO otherwise. 242*1b3f573fSAndroid Build Coastguard Worker **/ 243*1b3f573fSAndroid Build Coastguard Worker - (BOOL)getValue:(nullable int32_t *)outValue forEnumName:(NSString *)name; 244*1b3f573fSAndroid Build Coastguard Worker 245*1b3f573fSAndroid Build Coastguard Worker /** 246*1b3f573fSAndroid Build Coastguard Worker * Returns the text format for the given raw enum value. 247*1b3f573fSAndroid Build Coastguard Worker * 248*1b3f573fSAndroid Build Coastguard Worker * @param number The raw enum value. 249*1b3f573fSAndroid Build Coastguard Worker * 250*1b3f573fSAndroid Build Coastguard Worker * @return The first text format name which matches the enum value, or nil if not valid. 251*1b3f573fSAndroid Build Coastguard Worker **/ 252*1b3f573fSAndroid Build Coastguard Worker - (nullable NSString *)textFormatNameForValue:(int32_t)number; 253*1b3f573fSAndroid Build Coastguard Worker 254*1b3f573fSAndroid Build Coastguard Worker /** 255*1b3f573fSAndroid Build Coastguard Worker * Gets the enum raw value for the given text format name. 256*1b3f573fSAndroid Build Coastguard Worker * 257*1b3f573fSAndroid Build Coastguard Worker * @param outValue A pointer where the value will be set. 258*1b3f573fSAndroid Build Coastguard Worker * @param textFormatName The text format name for which to get the raw value. 259*1b3f573fSAndroid Build Coastguard Worker * 260*1b3f573fSAndroid Build Coastguard Worker * @return YES if a value was copied into the pointer, NO otherwise. 261*1b3f573fSAndroid Build Coastguard Worker **/ 262*1b3f573fSAndroid Build Coastguard Worker - (BOOL)getValue:(nullable int32_t *)outValue forEnumTextFormatName:(NSString *)textFormatName; 263*1b3f573fSAndroid Build Coastguard Worker 264*1b3f573fSAndroid Build Coastguard Worker /** 265*1b3f573fSAndroid Build Coastguard Worker * Gets the number of defined enum names. 266*1b3f573fSAndroid Build Coastguard Worker * 267*1b3f573fSAndroid Build Coastguard Worker * @return Count of the number of enum names, including any aliases. 268*1b3f573fSAndroid Build Coastguard Worker */ 269*1b3f573fSAndroid Build Coastguard Worker @property(nonatomic, readonly) uint32_t enumNameCount; 270*1b3f573fSAndroid Build Coastguard Worker 271*1b3f573fSAndroid Build Coastguard Worker /** 272*1b3f573fSAndroid Build Coastguard Worker * Gets the enum name corresponding to the given index. 273*1b3f573fSAndroid Build Coastguard Worker * 274*1b3f573fSAndroid Build Coastguard Worker * @param index Index into the available names. The defined range is from 0 275*1b3f573fSAndroid Build Coastguard Worker * to self.enumNameCount - 1. 276*1b3f573fSAndroid Build Coastguard Worker * 277*1b3f573fSAndroid Build Coastguard Worker * @returns The enum name at the given index, or nil if the index is out of range. 278*1b3f573fSAndroid Build Coastguard Worker */ 279*1b3f573fSAndroid Build Coastguard Worker - (nullable NSString *)getEnumNameForIndex:(uint32_t)index; 280*1b3f573fSAndroid Build Coastguard Worker 281*1b3f573fSAndroid Build Coastguard Worker /** 282*1b3f573fSAndroid Build Coastguard Worker * Gets the enum text format name corresponding to the given index. 283*1b3f573fSAndroid Build Coastguard Worker * 284*1b3f573fSAndroid Build Coastguard Worker * @param index Index into the available names. The defined range is from 0 285*1b3f573fSAndroid Build Coastguard Worker * to self.enumNameCount - 1. 286*1b3f573fSAndroid Build Coastguard Worker * 287*1b3f573fSAndroid Build Coastguard Worker * @returns The text format name at the given index, or nil if the index is out of range. 288*1b3f573fSAndroid Build Coastguard Worker */ 289*1b3f573fSAndroid Build Coastguard Worker - (nullable NSString *)getEnumTextFormatNameForIndex:(uint32_t)index; 290*1b3f573fSAndroid Build Coastguard Worker 291*1b3f573fSAndroid Build Coastguard Worker @end 292*1b3f573fSAndroid Build Coastguard Worker 293*1b3f573fSAndroid Build Coastguard Worker /** 294*1b3f573fSAndroid Build Coastguard Worker * Describes a proto extension. 295*1b3f573fSAndroid Build Coastguard Worker **/ 296*1b3f573fSAndroid Build Coastguard Worker @interface GPBExtensionDescriptor : NSObject<NSCopying> 297*1b3f573fSAndroid Build Coastguard Worker /** Field number under which the extension is stored. */ 298*1b3f573fSAndroid Build Coastguard Worker @property(nonatomic, readonly) uint32_t fieldNumber; 299*1b3f573fSAndroid Build Coastguard Worker /** The containing message class, i.e. the class extended by this extension. */ 300*1b3f573fSAndroid Build Coastguard Worker @property(nonatomic, readonly) Class containingMessageClass; 301*1b3f573fSAndroid Build Coastguard Worker /** Data type contained in the extension. */ 302*1b3f573fSAndroid Build Coastguard Worker @property(nonatomic, readonly) GPBDataType dataType; 303*1b3f573fSAndroid Build Coastguard Worker /** Whether the extension is repeated. */ 304*1b3f573fSAndroid Build Coastguard Worker @property(nonatomic, readonly, getter=isRepeated) BOOL repeated; 305*1b3f573fSAndroid Build Coastguard Worker /** Whether the extension is packable. */ 306*1b3f573fSAndroid Build Coastguard Worker @property(nonatomic, readonly, getter=isPackable) BOOL packable; 307*1b3f573fSAndroid Build Coastguard Worker /** The class of the message if the extension is of message type. */ 308*1b3f573fSAndroid Build Coastguard Worker @property(nonatomic, readonly) Class msgClass; 309*1b3f573fSAndroid Build Coastguard Worker /** The singleton name for the extension. */ 310*1b3f573fSAndroid Build Coastguard Worker @property(nonatomic, readonly) NSString *singletonName; 311*1b3f573fSAndroid Build Coastguard Worker /** The enum descriptor if the extension is of enum type. */ 312*1b3f573fSAndroid Build Coastguard Worker @property(nonatomic, readonly, strong, nullable) GPBEnumDescriptor *enumDescriptor; 313*1b3f573fSAndroid Build Coastguard Worker /** The default value for the extension. */ 314*1b3f573fSAndroid Build Coastguard Worker @property(nonatomic, readonly, nullable) id defaultValue; 315*1b3f573fSAndroid Build Coastguard Worker 316*1b3f573fSAndroid Build Coastguard Worker @end 317*1b3f573fSAndroid Build Coastguard Worker 318*1b3f573fSAndroid Build Coastguard Worker NS_ASSUME_NONNULL_END 319