| OLD | NEW |
| 1 // Protocol Buffers - Google's data interchange format | 1 // Protocol Buffers - Google's data interchange format |
| 2 // Copyright 2008 Google Inc. All rights reserved. | 2 // Copyright 2008 Google Inc. All rights reserved. |
| 3 // https://developers.google.com/protocol-buffers/ | 3 // https://developers.google.com/protocol-buffers/ |
| 4 // | 4 // |
| 5 // Redistribution and use in source and binary forms, with or without | 5 // Redistribution and use in source and binary forms, with or without |
| 6 // modification, are permitted provided that the following conditions are | 6 // modification, are permitted provided that the following conditions are |
| 7 // met: | 7 // met: |
| 8 // | 8 // |
| 9 // * Redistributions of source code must retain the above copyright | 9 // * Redistributions of source code must retain the above copyright |
| 10 // notice, this list of conditions and the following disclaimer. | 10 // notice, this list of conditions and the following disclaimer. |
| (...skipping 21 matching lines...) Expand all Loading... |
| 32 | 32 |
| 33 #import "GPBRuntimeTypes.h" | 33 #import "GPBRuntimeTypes.h" |
| 34 | 34 |
| 35 @class GPBEnumDescriptor; | 35 @class GPBEnumDescriptor; |
| 36 @class GPBFieldDescriptor; | 36 @class GPBFieldDescriptor; |
| 37 @class GPBFileDescriptor; | 37 @class GPBFileDescriptor; |
| 38 @class GPBOneofDescriptor; | 38 @class GPBOneofDescriptor; |
| 39 | 39 |
| 40 NS_ASSUME_NONNULL_BEGIN | 40 NS_ASSUME_NONNULL_BEGIN |
| 41 | 41 |
| 42 /** Syntax used in the proto file. */ | |
| 43 typedef NS_ENUM(uint8_t, GPBFileSyntax) { | 42 typedef NS_ENUM(uint8_t, GPBFileSyntax) { |
| 44 /** Unknown syntax. */ | |
| 45 GPBFileSyntaxUnknown = 0, | 43 GPBFileSyntaxUnknown = 0, |
| 46 /** Proto2 syntax. */ | |
| 47 GPBFileSyntaxProto2 = 2, | 44 GPBFileSyntaxProto2 = 2, |
| 48 /** Proto3 syntax. */ | |
| 49 GPBFileSyntaxProto3 = 3, | 45 GPBFileSyntaxProto3 = 3, |
| 50 }; | 46 }; |
| 51 | 47 |
| 52 /** Type of proto field. */ | |
| 53 typedef NS_ENUM(uint8_t, GPBFieldType) { | 48 typedef NS_ENUM(uint8_t, GPBFieldType) { |
| 54 /** Optional/required field. Only valid for proto2 fields. */ | 49 GPBFieldTypeSingle, // optional/required |
| 55 GPBFieldTypeSingle, | 50 GPBFieldTypeRepeated, // repeated |
| 56 /** Repeated field. */ | 51 GPBFieldTypeMap, // map<K,V> |
| 57 GPBFieldTypeRepeated, | |
| 58 /** Map field. */ | |
| 59 GPBFieldTypeMap, | |
| 60 }; | 52 }; |
| 61 | 53 |
| 62 /** | |
| 63 * Describes a proto message. | |
| 64 **/ | |
| 65 @interface GPBDescriptor : NSObject<NSCopying> | 54 @interface GPBDescriptor : NSObject<NSCopying> |
| 66 | 55 |
| 67 /** Name of the message. */ | |
| 68 @property(nonatomic, readonly, copy) NSString *name; | 56 @property(nonatomic, readonly, copy) NSString *name; |
| 69 /** Fields declared in the message. */ | |
| 70 @property(nonatomic, readonly, strong, nullable) NSArray<GPBFieldDescriptor*> *f
ields; | 57 @property(nonatomic, readonly, strong, nullable) NSArray<GPBFieldDescriptor*> *f
ields; |
| 71 /** Oneofs declared in the message. */ | |
| 72 @property(nonatomic, readonly, strong, nullable) NSArray<GPBOneofDescriptor*> *o
neofs; | 58 @property(nonatomic, readonly, strong, nullable) NSArray<GPBOneofDescriptor*> *o
neofs; |
| 73 /** Extension range declared for the message. */ | |
| 74 @property(nonatomic, readonly, nullable) const GPBExtensionRange *extensionRange
s; | 59 @property(nonatomic, readonly, nullable) const GPBExtensionRange *extensionRange
s; |
| 75 /** Number of extension ranges declared for the message. */ | |
| 76 @property(nonatomic, readonly) uint32_t extensionRangesCount; | 60 @property(nonatomic, readonly) uint32_t extensionRangesCount; |
| 77 /** Descriptor for the file where the message was defined. */ | |
| 78 @property(nonatomic, readonly, assign) GPBFileDescriptor *file; | 61 @property(nonatomic, readonly, assign) GPBFileDescriptor *file; |
| 79 | 62 |
| 80 /** Whether the message is in wire format or not. */ | |
| 81 @property(nonatomic, readonly, getter=isWireFormat) BOOL wireFormat; | 63 @property(nonatomic, readonly, getter=isWireFormat) BOOL wireFormat; |
| 82 /** The class of this message. */ | |
| 83 @property(nonatomic, readonly) Class messageClass; | 64 @property(nonatomic, readonly) Class messageClass; |
| 84 /** Containing message descriptor if this message is nested, or nil otherwise. *
/ | |
| 85 @property(readonly, nullable) GPBDescriptor *containingType; | |
| 86 /** | |
| 87 * Fully qualified name for this message (package.message). Can be nil if the | |
| 88 * value is unable to be computed. | |
| 89 */ | |
| 90 @property(readonly, nullable) NSString *fullName; | |
| 91 | 65 |
| 92 /** | |
| 93 * Gets the field for the given number. | |
| 94 * | |
| 95 * @param fieldNumber The number for the field to get. | |
| 96 * | |
| 97 * @return The field descriptor for the given number, or nil if not found. | |
| 98 **/ | |
| 99 - (nullable GPBFieldDescriptor *)fieldWithNumber:(uint32_t)fieldNumber; | 66 - (nullable GPBFieldDescriptor *)fieldWithNumber:(uint32_t)fieldNumber; |
| 100 | |
| 101 /** | |
| 102 * Gets the field for the given name. | |
| 103 * | |
| 104 * @param name The name for the field to get. | |
| 105 * | |
| 106 * @return The field descriptor for the given name, or nil if not found. | |
| 107 **/ | |
| 108 - (nullable GPBFieldDescriptor *)fieldWithName:(NSString *)name; | 67 - (nullable GPBFieldDescriptor *)fieldWithName:(NSString *)name; |
| 109 | |
| 110 /** | |
| 111 * Gets the oneof for the given name. | |
| 112 * | |
| 113 * @param name The name for the oneof to get. | |
| 114 * | |
| 115 * @return The oneof descriptor for the given name, or nil if not found. | |
| 116 **/ | |
| 117 - (nullable GPBOneofDescriptor *)oneofWithName:(NSString *)name; | 68 - (nullable GPBOneofDescriptor *)oneofWithName:(NSString *)name; |
| 118 | 69 |
| 119 @end | 70 @end |
| 120 | 71 |
| 121 /** | |
| 122 * Describes a proto file. | |
| 123 **/ | |
| 124 @interface GPBFileDescriptor : NSObject | 72 @interface GPBFileDescriptor : NSObject |
| 125 | 73 |
| 126 /** The package declared in the proto file. */ | |
| 127 @property(nonatomic, readonly, copy) NSString *package; | 74 @property(nonatomic, readonly, copy) NSString *package; |
| 128 /** The objc prefix declared in the proto file. */ | |
| 129 @property(nonatomic, readonly, copy, nullable) NSString *objcPrefix; | |
| 130 /** The syntax of the proto file. */ | |
| 131 @property(nonatomic, readonly) GPBFileSyntax syntax; | 75 @property(nonatomic, readonly) GPBFileSyntax syntax; |
| 132 | 76 |
| 133 @end | 77 @end |
| 134 | 78 |
| 135 /** | |
| 136 * Describes a oneof field. | |
| 137 **/ | |
| 138 @interface GPBOneofDescriptor : NSObject | 79 @interface GPBOneofDescriptor : NSObject |
| 139 /** Name of the oneof field. */ | |
| 140 @property(nonatomic, readonly) NSString *name; | 80 @property(nonatomic, readonly) NSString *name; |
| 141 /** Fields declared in the oneof. */ | |
| 142 @property(nonatomic, readonly) NSArray<GPBFieldDescriptor*> *fields; | 81 @property(nonatomic, readonly) NSArray<GPBFieldDescriptor*> *fields; |
| 143 | 82 |
| 144 /** | |
| 145 * Gets the field for the given number. | |
| 146 * | |
| 147 * @param fieldNumber The number for the field to get. | |
| 148 * | |
| 149 * @return The field descriptor for the given number, or nil if not found. | |
| 150 **/ | |
| 151 - (nullable GPBFieldDescriptor *)fieldWithNumber:(uint32_t)fieldNumber; | 83 - (nullable GPBFieldDescriptor *)fieldWithNumber:(uint32_t)fieldNumber; |
| 152 | |
| 153 /** | |
| 154 * Gets the field for the given name. | |
| 155 * | |
| 156 * @param name The name for the field to get. | |
| 157 * | |
| 158 * @return The field descriptor for the given name, or nil if not found. | |
| 159 **/ | |
| 160 - (nullable GPBFieldDescriptor *)fieldWithName:(NSString *)name; | 84 - (nullable GPBFieldDescriptor *)fieldWithName:(NSString *)name; |
| 161 | |
| 162 @end | 85 @end |
| 163 | 86 |
| 164 /** | |
| 165 * Describes a proto field. | |
| 166 **/ | |
| 167 @interface GPBFieldDescriptor : NSObject | 87 @interface GPBFieldDescriptor : NSObject |
| 168 | 88 |
| 169 /** Name of the field. */ | |
| 170 @property(nonatomic, readonly, copy) NSString *name; | 89 @property(nonatomic, readonly, copy) NSString *name; |
| 171 /** Number associated with the field. */ | |
| 172 @property(nonatomic, readonly) uint32_t number; | 90 @property(nonatomic, readonly) uint32_t number; |
| 173 /** Data type contained in the field. */ | |
| 174 @property(nonatomic, readonly) GPBDataType dataType; | 91 @property(nonatomic, readonly) GPBDataType dataType; |
| 175 /** Whether it has a default value or not. */ | |
| 176 @property(nonatomic, readonly) BOOL hasDefaultValue; | 92 @property(nonatomic, readonly) BOOL hasDefaultValue; |
| 177 /** Default value for the field. */ | |
| 178 @property(nonatomic, readonly) GPBGenericValue defaultValue; | 93 @property(nonatomic, readonly) GPBGenericValue defaultValue; |
| 179 /** Whether this field is required. Only valid for proto2 fields. */ | |
| 180 @property(nonatomic, readonly, getter=isRequired) BOOL required; | 94 @property(nonatomic, readonly, getter=isRequired) BOOL required; |
| 181 /** Whether this field is optional. */ | |
| 182 @property(nonatomic, readonly, getter=isOptional) BOOL optional; | 95 @property(nonatomic, readonly, getter=isOptional) BOOL optional; |
| 183 /** Type of field (single, repeated, map). */ | |
| 184 @property(nonatomic, readonly) GPBFieldType fieldType; | 96 @property(nonatomic, readonly) GPBFieldType fieldType; |
| 185 /** Type of the key if the field is a map. The value's type is -fieldType. */ | 97 // If it is a map, the value type is in -type. |
| 186 @property(nonatomic, readonly) GPBDataType mapKeyDataType; | 98 @property(nonatomic, readonly) GPBDataType mapKeyDataType; |
| 187 /** Whether the field is packable. */ | |
| 188 @property(nonatomic, readonly, getter=isPackable) BOOL packable; | 99 @property(nonatomic, readonly, getter=isPackable) BOOL packable; |
| 189 | 100 |
| 190 /** The containing oneof if this field is part of one, nil otherwise. */ | |
| 191 @property(nonatomic, readonly, assign, nullable) GPBOneofDescriptor *containingO
neof; | 101 @property(nonatomic, readonly, assign, nullable) GPBOneofDescriptor *containingO
neof; |
| 192 | 102 |
| 193 /** Class of the message if the field is of message type. */ | 103 // Message properties |
| 194 @property(nonatomic, readonly, assign, nullable) Class msgClass; | 104 @property(nonatomic, readonly, assign, nullable) Class msgClass; |
| 195 | 105 |
| 196 /** Descriptor for the enum if this field is an enum. */ | 106 // Enum properties |
| 197 @property(nonatomic, readonly, strong, nullable) GPBEnumDescriptor *enumDescript
or; | 107 @property(nonatomic, readonly, strong, nullable) GPBEnumDescriptor *enumDescript
or; |
| 198 | 108 |
| 199 /** | |
| 200 * Checks whether the given enum raw value is a valid enum value. | |
| 201 * | |
| 202 * @param value The raw enum value to check. | |
| 203 * | |
| 204 * @return YES if value is a valid enum raw value. | |
| 205 **/ | |
| 206 - (BOOL)isValidEnumValue:(int32_t)value; | 109 - (BOOL)isValidEnumValue:(int32_t)value; |
| 207 | 110 |
| 208 /** @return Name for the text format, or nil if not known. */ | 111 // For now, this will return nil if it doesn't know the name to use for |
| 112 // TextFormat. |
| 209 - (nullable NSString *)textFormatName; | 113 - (nullable NSString *)textFormatName; |
| 210 | 114 |
| 211 @end | 115 @end |
| 212 | 116 |
| 213 /** | |
| 214 * Describes a proto enum. | |
| 215 **/ | |
| 216 @interface GPBEnumDescriptor : NSObject | 117 @interface GPBEnumDescriptor : NSObject |
| 217 | 118 |
| 218 /** Name of the enum. */ | |
| 219 @property(nonatomic, readonly, copy) NSString *name; | 119 @property(nonatomic, readonly, copy) NSString *name; |
| 220 /** Function that validates that raw values are valid enum values. */ | |
| 221 @property(nonatomic, readonly) GPBEnumValidationFunc enumVerifier; | 120 @property(nonatomic, readonly) GPBEnumValidationFunc enumVerifier; |
| 222 | 121 |
| 223 /** | |
| 224 * Returns the enum value name for the given raw enum. | |
| 225 * | |
| 226 * @param number The raw enum value. | |
| 227 * | |
| 228 * @return The name of the enum value passed, or nil if not valid. | |
| 229 **/ | |
| 230 - (nullable NSString *)enumNameForValue:(int32_t)number; | 122 - (nullable NSString *)enumNameForValue:(int32_t)number; |
| 231 | |
| 232 /** | |
| 233 * Gets the enum raw value for the given enum name. | |
| 234 * | |
| 235 * @param outValue A pointer where the value will be set. | |
| 236 * @param name The enum name for which to get the raw value. | |
| 237 * | |
| 238 * @return YES if a value was copied into the pointer, NO otherwise. | |
| 239 **/ | |
| 240 - (BOOL)getValue:(nullable int32_t *)outValue forEnumName:(NSString *)name; | 123 - (BOOL)getValue:(nullable int32_t *)outValue forEnumName:(NSString *)name; |
| 241 | 124 |
| 242 /** | |
| 243 * Returns the text format for the given raw enum value. | |
| 244 * | |
| 245 * @param number The raw enum value. | |
| 246 * | |
| 247 * @return The text format name for the raw enum value, or nil if not valid. | |
| 248 **/ | |
| 249 - (nullable NSString *)textFormatNameForValue:(int32_t)number; | 125 - (nullable NSString *)textFormatNameForValue:(int32_t)number; |
| 250 | 126 |
| 251 /** | |
| 252 * Gets the enum raw value for the given text format name. | |
| 253 * | |
| 254 * @param outValue A pointer where the value will be set. | |
| 255 * @param textFormatName The text format name for which to get the raw value. | |
| 256 * | |
| 257 * @return YES if a value was copied into the pointer, NO otherwise. | |
| 258 **/ | |
| 259 - (BOOL)getValue:(nullable int32_t *)outValue forEnumTextFormatName:(NSString *)
textFormatName; | |
| 260 | |
| 261 @end | 127 @end |
| 262 | 128 |
| 263 /** | |
| 264 * Describes a proto extension. | |
| 265 **/ | |
| 266 @interface GPBExtensionDescriptor : NSObject<NSCopying> | 129 @interface GPBExtensionDescriptor : NSObject<NSCopying> |
| 267 /** Field number under which the extension is stored. */ | |
| 268 @property(nonatomic, readonly) uint32_t fieldNumber; | 130 @property(nonatomic, readonly) uint32_t fieldNumber; |
| 269 /** The containing message class, i.e. the class extended by this extension. */ | |
| 270 @property(nonatomic, readonly) Class containingMessageClass; | 131 @property(nonatomic, readonly) Class containingMessageClass; |
| 271 /** Data type contained in the extension. */ | |
| 272 @property(nonatomic, readonly) GPBDataType dataType; | 132 @property(nonatomic, readonly) GPBDataType dataType; |
| 273 /** Whether the extension is repeated. */ | |
| 274 @property(nonatomic, readonly, getter=isRepeated) BOOL repeated; | 133 @property(nonatomic, readonly, getter=isRepeated) BOOL repeated; |
| 275 /** Whether the extension is packable. */ | |
| 276 @property(nonatomic, readonly, getter=isPackable) BOOL packable; | 134 @property(nonatomic, readonly, getter=isPackable) BOOL packable; |
| 277 /** The class of the message if the extension is of message type. */ | |
| 278 @property(nonatomic, readonly, assign) Class msgClass; | 135 @property(nonatomic, readonly, assign) Class msgClass; |
| 279 /** The singleton name for the extension. */ | |
| 280 @property(nonatomic, readonly) NSString *singletonName; | 136 @property(nonatomic, readonly) NSString *singletonName; |
| 281 /** The enum descriptor if the extension is of enum type. */ | |
| 282 @property(nonatomic, readonly, strong, nullable) GPBEnumDescriptor *enumDescript
or; | 137 @property(nonatomic, readonly, strong, nullable) GPBEnumDescriptor *enumDescript
or; |
| 283 /** The default value for the extension. */ | 138 @property(nonatomic, readonly) id defaultValue; |
| 284 @property(nonatomic, readonly, nullable) id defaultValue; | |
| 285 | |
| 286 @end | 139 @end |
| 287 | 140 |
| 288 NS_ASSUME_NONNULL_END | 141 NS_ASSUME_NONNULL_END |
| OLD | NEW |