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 26 matching lines...) Expand all Loading... |
37 @class GPBCodedOutputStream; | 37 @class GPBCodedOutputStream; |
38 @class GPBExtensionDescriptor; | 38 @class GPBExtensionDescriptor; |
39 @class GPBExtensionRegistry; | 39 @class GPBExtensionRegistry; |
40 @class GPBFieldDescriptor; | 40 @class GPBFieldDescriptor; |
41 @class GPBUnknownFieldSet; | 41 @class GPBUnknownFieldSet; |
42 | 42 |
43 NS_ASSUME_NONNULL_BEGIN | 43 NS_ASSUME_NONNULL_BEGIN |
44 | 44 |
45 CF_EXTERN_C_BEGIN | 45 CF_EXTERN_C_BEGIN |
46 | 46 |
47 /// NSError domain used for errors. | 47 /** NSError domain used for errors. */ |
48 extern NSString *const GPBMessageErrorDomain; | 48 extern NSString *const GPBMessageErrorDomain; |
49 | 49 |
50 /// Error code for NSError with GPBMessageErrorDomain. | 50 /** Error codes for NSErrors originated in GPBMessage. */ |
51 typedef NS_ENUM(NSInteger, GPBMessageErrorCode) { | 51 typedef NS_ENUM(NSInteger, GPBMessageErrorCode) { |
52 /// The data being parsed is bad and a message can not be created from it. | 52 /** Uncategorized error. */ |
53 GPBMessageErrorCodeMalformedData = -100, | 53 GPBMessageErrorCodeOther = -100, |
54 /// A message can't be serialized because it is missing required fields. | 54 /** Message couldn't be serialized because it is missing required fields. */ |
55 GPBMessageErrorCodeMissingRequiredField = -101, | 55 GPBMessageErrorCodeMissingRequiredField = -101, |
56 }; | 56 }; |
57 | 57 |
58 #ifdef DEBUG | 58 /** |
59 /// In DEBUG ONLY, an NSException is thrown when a parsed message doesn't | 59 * Key under which the GPBMessage error's reason is stored inside the userInfo |
60 /// contain required fields. This key allows you to retrieve the parsed message | 60 * dictionary. |
61 /// from the exception's @c userInfo dictionary. | 61 **/ |
62 extern NSString *const GPBExceptionMessageKey; | 62 extern NSString *const GPBErrorReasonKey; |
63 #endif // DEBUG | |
64 | 63 |
65 CF_EXTERN_C_END | 64 CF_EXTERN_C_END |
66 | 65 |
67 /// Base class for all of the generated message classes. | 66 /** |
| 67 * Base class that each generated message subclasses from. |
| 68 * |
| 69 * @note While the class support NSSecureCoding, if the message has any |
| 70 * extensions, they will end up reloaded in @c unknownFields as there is |
| 71 * no way for the @c NSCoding plumbing to pass through a |
| 72 * @c GPBExtensionRegistry. To support extensions, instead of passing the |
| 73 * calls off to the Message, simple store the result of @c data, and then |
| 74 * when loading, fetch the data and use |
| 75 * @c +parseFromData:extensionRegistry:error: to provide an extension |
| 76 * registry. |
| 77 **/ |
68 @interface GPBMessage : NSObject<NSSecureCoding, NSCopying> | 78 @interface GPBMessage : NSObject<NSSecureCoding, NSCopying> |
69 | 79 |
70 // NOTE: If you add a instance method/property to this class that may conflict | 80 // If you add an instance method/property to this class that may conflict with |
71 // with methods declared in protos, you need to update objective_helpers.cc. | 81 // fields declared in protos, you need to update objective_helpers.cc. The main |
72 // The main cases are methods that take no arguments, or setFoo:/hasFoo: type | 82 // cases are methods that take no arguments, or setFoo:/hasFoo: type methods. |
73 // methods. | 83 |
74 | 84 /** |
75 /// The unknown fields for this message. | 85 * The set of unknown fields for this message. |
76 /// | 86 * |
77 /// Only messages from proto files declared with "proto2" syntax support unknown | 87 * Only messages from proto files declared with "proto2" syntax support unknown |
78 /// fields. For "proto3" syntax, any unknown fields found while parsing are | 88 * fields. For "proto3" syntax, any unknown fields found while parsing are |
79 /// dropped. | 89 * dropped. |
| 90 **/ |
80 @property(nonatomic, copy, nullable) GPBUnknownFieldSet *unknownFields; | 91 @property(nonatomic, copy, nullable) GPBUnknownFieldSet *unknownFields; |
81 | 92 |
82 /// Are all required fields set in the message and all embedded messages. | 93 /** |
| 94 * Whether the message, along with all submessages, have the required fields |
| 95 * set. This is only applicable for files declared with "proto2" syntax, as |
| 96 * there are no required fields for "proto3" syntax. |
| 97 **/ |
83 @property(nonatomic, readonly, getter=isInitialized) BOOL initialized; | 98 @property(nonatomic, readonly, getter=isInitialized) BOOL initialized; |
84 | 99 |
85 /// Returns an autoreleased instance. | 100 /** |
| 101 * @return An autoreleased message with the default values set. |
| 102 **/ |
86 + (instancetype)message; | 103 + (instancetype)message; |
87 | 104 |
88 /// Creates a new instance by parsing the data. This method should be sent to | 105 /** |
89 /// the generated message class that the data should be interpreted as. If | 106 * Creates a new instance by parsing the provided data. This method should be |
90 /// there is an error the method returns nil and the error is returned in | 107 * sent to the generated message class that the data should be interpreted as. |
91 /// errorPtr (when provided). | 108 * If there is an error the method returns nil and the error is returned in |
92 /// | 109 * errorPtr (when provided). |
93 /// @note In DEBUG builds, the parsed message is checked to be sure all required | 110 * |
94 /// fields were provided, and the parse will fail if some are missing. | 111 * @note In DEBUG builds, the parsed message is checked to be sure all required |
95 /// | 112 * fields were provided, and the parse will fail if some are missing. |
96 /// @param data The data to parse. | 113 * |
97 /// @param errorPtr An optional error pointer to fill in with a failure reason i
f | 114 * @note The errors returned are likely coming from the domain and codes listed |
98 /// the data can not be parsed. | 115 * at the top of this file and GPBCodedInputStream.h. |
99 /// | 116 * |
100 /// @return A new instance of the class messaged. | 117 * @param data The data to parse. |
101 + (instancetype)parseFromData:(NSData *)data error:(NSError **)errorPtr; | 118 * @param errorPtr An optional error pointer to fill in with a failure reason if |
102 | 119 * the data can not be parsed. |
103 /// Creates a new instance by parsing the data. This method should be sent to | 120 * |
104 /// the generated message class that the data should be interpreted as. If | 121 * @return A new instance of the generated class. |
105 /// there is an error the method returns nil and the error is returned in | 122 **/ |
106 /// errorPtr (when provided). | 123 + (nullable instancetype)parseFromData:(NSData *)data error:(NSError **)errorPtr
; |
107 /// | 124 |
108 /// @note In DEBUG builds, the parsed message is checked to be sure all required | 125 /** |
109 /// fields were provided, and the parse will fail if some are missing. | 126 * Creates a new instance by parsing the data. This method should be sent to |
110 /// | 127 * the generated message class that the data should be interpreted as. If |
111 /// @param data The data to parse. | 128 * there is an error the method returns nil and the error is returned in |
112 /// @param extensionRegistry The extension registry to use to look up extensions
. | 129 * errorPtr (when provided). |
113 /// @param errorPtr An optional error pointer to fill in with a failure | 130 * |
114 /// reason if the data can not be parsed. | 131 * @note In DEBUG builds, the parsed message is checked to be sure all required |
115 /// | 132 * fields were provided, and the parse will fail if some are missing. |
116 /// @return A new instance of the class messaged. | 133 * |
117 + (instancetype)parseFromData:(NSData *)data | 134 * @note The errors returned are likely coming from the domain and codes listed |
118 extensionRegistry:(nullable GPBExtensionRegistry *)extensionRegistry | 135 * at the top of this file and GPBCodedInputStream.h. |
119 error:(NSError **)errorPtr; | 136 * |
120 | 137 * @param data The data to parse. |
121 /// Creates a new instance by parsing the data from the given input stream. This | 138 * @param extensionRegistry The extension registry to use to look up extensions. |
122 /// method should be sent to the generated message class that the data should | 139 * @param errorPtr An optional error pointer to fill in with a failure |
123 /// be interpreted as. If there is an error the method returns nil and the error | 140 * reason if the data can not be parsed. |
124 /// is returned in errorPtr (when provided). | 141 * |
125 /// | 142 * @return A new instance of the generated class. |
126 /// @note In DEBUG builds, the parsed message is checked to be sure all required | 143 **/ |
127 /// fields were provided, and the parse will fail if some are missing. | 144 + (nullable instancetype)parseFromData:(NSData *)data |
128 /// | 145 extensionRegistry:(nullable GPBExtensionRegistry *)extensio
nRegistry |
129 /// @param input The stream to read data from. | 146 error:(NSError **)errorPtr; |
130 /// @param extensionRegistry The extension registry to use to look up extensions
. | 147 |
131 /// @param errorPtr An optional error pointer to fill in with a failure | 148 /** |
132 /// reason if the data can not be parsed. | 149 * Creates a new instance by parsing the data from the given input stream. This |
133 /// | 150 * method should be sent to the generated message class that the data should |
134 /// @return A new instance of the class messaged. | 151 * be interpreted as. If there is an error the method returns nil and the error |
135 + (instancetype)parseFromCodedInputStream:(GPBCodedInputStream *)input | 152 * is returned in errorPtr (when provided). |
136 extensionRegistry: | 153 * |
137 (nullable GPBExtensionRegistry *)extensionRegistry | 154 * @note In DEBUG builds, the parsed message is checked to be sure all required |
138 error:(NSError **)errorPtr; | 155 * fields were provided, and the parse will fail if some are missing. |
139 | 156 * |
140 /// Creates a new instance by parsing the data from the given input stream. This | 157 * @note The errors returned are likely coming from the domain and codes listed |
141 /// method should be sent to the generated message class that the data should | 158 * at the top of this file and GPBCodedInputStream.h. |
142 /// be interpreted as. If there is an error the method returns nil and the error | 159 * |
143 /// is returned in errorPtr (when provided). | 160 * @param input The stream to read data from. |
144 /// | 161 * @param extensionRegistry The extension registry to use to look up extensions. |
145 /// @note Unlike the parseFrom... methods, this never checks to see if all of | 162 * @param errorPtr An optional error pointer to fill in with a failure |
146 /// the required fields are set. So this method can be used to reload | 163 * reason if the data can not be parsed. |
147 /// messages that may not be complete. | 164 * |
148 /// | 165 * @return A new instance of the generated class. |
149 /// @param input The stream to read data from. | 166 **/ |
150 /// @param extensionRegistry The extension registry to use to look up extensions
. | 167 + (nullable instancetype)parseFromCodedInputStream:(GPBCodedInputStream *)input |
151 /// @param errorPtr An optional error pointer to fill in with a failure | |
152 /// reason if the data can not be parsed. | |
153 /// | |
154 /// @return A new instance of the class messaged. | |
155 + (instancetype)parseDelimitedFromCodedInputStream:(GPBCodedInputStream *)input | |
156 extensionRegistry: | 168 extensionRegistry: |
157 (nullable GPBExtensionRegistry *)extensionR
egistry | 169 (nullable GPBExtensionRegistry *)extensionR
egistry |
158 error:(NSError **)errorPtr; | 170 error:(NSError **)errorPtr; |
159 | 171 |
160 /// Initializes an instance by parsing the data. This method should be sent to | 172 /** |
161 /// the generated message class that the data should be interpreted as. If | 173 * Creates a new instance by parsing the data from the given input stream. This |
162 /// there is an error the method returns nil and the error is returned in | 174 * method should be sent to the generated message class that the data should |
163 /// errorPtr (when provided). | 175 * be interpreted as. If there is an error the method returns nil and the error |
164 /// | 176 * is returned in errorPtr (when provided). |
165 /// @note In DEBUG builds, the parsed message is checked to be sure all required | 177 * |
166 /// fields were provided, and the parse will fail if some are missing. | 178 * @note Unlike the parseFrom... methods, this never checks to see if all of |
167 /// | 179 * the required fields are set. So this method can be used to reload |
168 /// @param data The data to parse. | 180 * messages that may not be complete. |
169 /// @param errorPtr An optional error pointer to fill in with a failure reason i
f | 181 * |
170 /// the data can not be parsed. | 182 * @note The errors returned are likely coming from the domain and codes listed |
171 - (instancetype)initWithData:(NSData *)data error:(NSError **)errorPtr; | 183 * at the top of this file and GPBCodedInputStream.h. |
172 | 184 * |
173 /// Initializes an instance by parsing the data. This method should be sent to | 185 * @param input The stream to read data from. |
174 /// the generated message class that the data should be interpreted as. If | 186 * @param extensionRegistry The extension registry to use to look up extensions. |
175 /// there is an error the method returns nil and the error is returned in | 187 * @param errorPtr An optional error pointer to fill in with a failure |
176 /// errorPtr (when provided). | 188 * reason if the data can not be parsed. |
177 /// | 189 * |
178 /// @note In DEBUG builds, the parsed message is checked to be sure all required | 190 * @return A new instance of the generated class. |
179 /// fields were provided, and the parse will fail if some are missing. | 191 **/ |
180 /// | 192 + (nullable instancetype)parseDelimitedFromCodedInputStream:(GPBCodedInputStream
*)input |
181 /// @param data The data to parse. | 193 extensionRegistry: |
182 /// @param extensionRegistry The extension registry to use to look up extensions
. | 194 (nullable GPBExtensionRegistry *)e
xtensionRegistry |
183 /// @param errorPtr An optional error pointer to fill in with a failure | 195 error:(NSError **)errorPtr
; |
184 /// reason if the data can not be parsed. | 196 |
185 - (instancetype)initWithData:(NSData *)data | 197 /** |
186 extensionRegistry:(nullable GPBExtensionRegistry *)extensionRegistry | 198 * Initializes an instance by parsing the data. This method should be sent to |
187 error:(NSError **)errorPtr; | 199 * the generated message class that the data should be interpreted as. If |
188 | 200 * there is an error the method returns nil and the error is returned in |
189 /// Initializes an instance by parsing the data from the given input stream. Thi
s | 201 * errorPtr (when provided). |
190 /// method should be sent to the generated message class that the data should | 202 * |
191 /// be interpreted as. If there is an error the method returns nil and the error | 203 * @note In DEBUG builds, the parsed message is checked to be sure all required |
192 /// is returned in errorPtr (when provided). | 204 * fields were provided, and the parse will fail if some are missing. |
193 /// | 205 * |
194 /// @note Unlike the parseFrom... methods, this never checks to see if all of | 206 * @note The errors returned are likely coming from the domain and codes listed |
195 /// the required fields are set. So this method can be used to reload | 207 * at the top of this file and GPBCodedInputStream.h. |
196 /// messages that may not be complete. | 208 * |
197 /// | 209 * @param data The data to parse. |
198 /// @param input The stream to read data from. | 210 * @param errorPtr An optional error pointer to fill in with a failure reason if |
199 /// @param extensionRegistry The extension registry to use to look up extensions
. | 211 * the data can not be parsed. |
200 /// @param errorPtr An optional error pointer to fill in with a failure | 212 * |
201 /// reason if the data can not be parsed. | 213 * @return An initialized instance of the generated class. |
202 - (instancetype)initWithCodedInputStream:(GPBCodedInputStream *)input | 214 **/ |
203 extensionRegistry: | 215 - (nullable instancetype)initWithData:(NSData *)data error:(NSError **)errorPtr; |
204 (nullable GPBExtensionRegistry *)extensionRegistry | 216 |
205 error:(NSError **)errorPtr; | 217 /** |
206 | 218 * Initializes an instance by parsing the data. This method should be sent to |
207 /// Writes out the message to the given output stream. | 219 * the generated message class that the data should be interpreted as. If |
| 220 * there is an error the method returns nil and the error is returned in |
| 221 * errorPtr (when provided). |
| 222 * |
| 223 * @note In DEBUG builds, the parsed message is checked to be sure all required |
| 224 * fields were provided, and the parse will fail if some are missing. |
| 225 * |
| 226 * @note The errors returned are likely coming from the domain and codes listed |
| 227 * at the top of this file and GPBCodedInputStream.h. |
| 228 * |
| 229 * @param data The data to parse. |
| 230 * @param extensionRegistry The extension registry to use to look up extensions. |
| 231 * @param errorPtr An optional error pointer to fill in with a failure |
| 232 * reason if the data can not be parsed. |
| 233 * |
| 234 * @return An initialized instance of the generated class. |
| 235 **/ |
| 236 - (nullable instancetype)initWithData:(NSData *)data |
| 237 extensionRegistry:(nullable GPBExtensionRegistry *)extension
Registry |
| 238 error:(NSError **)errorPtr; |
| 239 |
| 240 /** |
| 241 * Initializes an instance by parsing the data from the given input stream. This |
| 242 * method should be sent to the generated message class that the data should |
| 243 * be interpreted as. If there is an error the method returns nil and the error |
| 244 * is returned in errorPtr (when provided). |
| 245 * |
| 246 * @note Unlike the parseFrom... methods, this never checks to see if all of |
| 247 * the required fields are set. So this method can be used to reload |
| 248 * messages that may not be complete. |
| 249 * |
| 250 * @note The errors returned are likely coming from the domain and codes listed |
| 251 * at the top of this file and GPBCodedInputStream.h. |
| 252 * |
| 253 * @param input The stream to read data from. |
| 254 * @param extensionRegistry The extension registry to use to look up extensions. |
| 255 * @param errorPtr An optional error pointer to fill in with a failure |
| 256 * reason if the data can not be parsed. |
| 257 * |
| 258 * @return An initialized instance of the generated class. |
| 259 **/ |
| 260 - (nullable instancetype)initWithCodedInputStream:(GPBCodedInputStream *)input |
| 261 extensionRegistry: |
| 262 (nullable GPBExtensionRegistry *)extensionRe
gistry |
| 263 error:(NSError **)errorPtr; |
| 264 |
| 265 /** |
| 266 * Parses the given data as this message's class, and merges those values into |
| 267 * this message. |
| 268 * |
| 269 * @param data The binary representation of the message to merge. |
| 270 * @param extensionRegistry The extension registry to use to look up extensions. |
| 271 * |
| 272 * @exception GPBCodedInputStreamException Exception thrown when parsing was |
| 273 * unsuccessful. |
| 274 **/ |
| 275 - (void)mergeFromData:(NSData *)data |
| 276 extensionRegistry:(nullable GPBExtensionRegistry *)extensionRegistry; |
| 277 |
| 278 /** |
| 279 * Merges the fields from another message (of the same type) into this |
| 280 * message. |
| 281 * |
| 282 * @param other Message to merge into this message. |
| 283 **/ |
| 284 - (void)mergeFrom:(GPBMessage *)other; |
| 285 |
| 286 /** |
| 287 * Writes out the message to the given coded output stream. |
| 288 * |
| 289 * @param output The coded output stream into which to write the message. |
| 290 **/ |
208 - (void)writeToCodedOutputStream:(GPBCodedOutputStream *)output; | 291 - (void)writeToCodedOutputStream:(GPBCodedOutputStream *)output; |
209 /// Writes out the message to the given output stream. | 292 |
| 293 /** |
| 294 * Writes out the message to the given output stream. |
| 295 * |
| 296 * @param output The output stream into which to write the message. |
| 297 **/ |
210 - (void)writeToOutputStream:(NSOutputStream *)output; | 298 - (void)writeToOutputStream:(NSOutputStream *)output; |
211 | 299 |
212 /// Writes out a varint for the message size followed by the the message to | 300 /** |
213 /// the given output stream. | 301 * Writes out a varint for the message size followed by the the message to |
| 302 * the given output stream. |
| 303 * |
| 304 * @param output The coded output stream into which to write the message. |
| 305 **/ |
214 - (void)writeDelimitedToCodedOutputStream:(GPBCodedOutputStream *)output; | 306 - (void)writeDelimitedToCodedOutputStream:(GPBCodedOutputStream *)output; |
215 /// Writes out a varint for the message size followed by the the message to | 307 |
216 /// the given output stream. | 308 /** |
| 309 * Writes out a varint for the message size followed by the the message to |
| 310 * the given output stream. |
| 311 * |
| 312 * @param output The output stream into which to write the message. |
| 313 **/ |
217 - (void)writeDelimitedToOutputStream:(NSOutputStream *)output; | 314 - (void)writeDelimitedToOutputStream:(NSOutputStream *)output; |
218 | 315 |
219 /// Serializes the message to a @c NSData. | 316 /** |
220 /// | 317 * Serializes the message to an NSData. |
221 /// If there is an error while generating the data, nil is returned. | 318 * |
222 /// | 319 * If there is an error while generating the data, nil is returned. |
223 /// @note This value is not cached, so if you are using it repeatedly, cache | 320 * |
224 /// it yourself. | 321 * @note This value is not cached, so if you are using it repeatedly, cache |
225 /// | 322 * it yourself. |
226 /// @note In DEBUG ONLY, the message is also checked for all required field, | 323 * |
227 /// if one is missing, nil will be returned. | 324 * @note In DEBUG ONLY, the message is also checked for all required field, |
| 325 * if one is missing, nil will be returned. |
| 326 * |
| 327 * @return The binary representation of the message. |
| 328 **/ |
228 - (nullable NSData *)data; | 329 - (nullable NSData *)data; |
229 | 330 |
230 /// Serializes a varint with the message size followed by the message data, | 331 /** |
231 /// returning that as a @c NSData. | 332 * Serializes a varint with the message size followed by the message data, |
232 /// | 333 * returning that as an NSData. |
233 /// @note This value is not cached, so if you are using it repeatedly, cache | 334 * |
234 /// it yourself. | 335 * @note This value is not cached, so if you are using it repeatedly, it is |
| 336 * recommended to keep a local copy. |
| 337 * |
| 338 * @return The binary representation of the size along with the message. |
| 339 **/ |
235 - (NSData *)delimitedData; | 340 - (NSData *)delimitedData; |
236 | 341 |
237 /// Calculates the size of the object if it were serialized. | 342 /** |
238 /// | 343 * Calculates the size of the object if it were serialized. |
239 /// This is not a cached value. If you are following a pattern like this: | 344 * |
240 /// @code | 345 * This is not a cached value. If you are following a pattern like this: |
241 /// size_t size = [aMsg serializedSize]; | 346 * |
242 /// NSMutableData *foo = [NSMutableData dataWithCapacity:size + sizeof(size)]; | 347 * ``` |
243 /// [foo writeSize:size]; | 348 * size_t size = [aMsg serializedSize]; |
244 /// [foo appendData:[aMsg data]]; | 349 * NSMutableData *foo = [NSMutableData dataWithCapacity:size + sizeof(size)]; |
245 /// @endcode | 350 * [foo writeSize:size]; |
246 /// you would be better doing: | 351 * [foo appendData:[aMsg data]]; |
247 /// @code | 352 * ``` |
248 /// NSData *data = [aMsg data]; | 353 * |
249 /// NSUInteger size = [aMsg length]; | 354 * you would be better doing: |
250 /// NSMutableData *foo = [NSMutableData dataWithCapacity:size + sizeof(size)]; | 355 * |
251 /// [foo writeSize:size]; | 356 * ``` |
252 /// [foo appendData:data]; | 357 * NSData *data = [aMsg data]; |
253 /// @endcode | 358 * NSUInteger size = [aMsg length]; |
| 359 * NSMutableData *foo = [NSMutableData dataWithCapacity:size + sizeof(size)]; |
| 360 * [foo writeSize:size]; |
| 361 * [foo appendData:data]; |
| 362 * ``` |
| 363 * |
| 364 * @return The size of the message in it's binary representation. |
| 365 **/ |
254 - (size_t)serializedSize; | 366 - (size_t)serializedSize; |
255 | 367 |
256 /// Return the descriptor for the message class. | 368 /** |
| 369 * @return The descriptor for the message class. |
| 370 **/ |
257 + (GPBDescriptor *)descriptor; | 371 + (GPBDescriptor *)descriptor; |
258 /// Return the descriptor for the message. | 372 |
| 373 /** |
| 374 * Return the descriptor for the message. |
| 375 **/ |
259 - (GPBDescriptor *)descriptor; | 376 - (GPBDescriptor *)descriptor; |
260 | 377 |
261 /// Test to see if the given extension is set on the message. | 378 /** |
| 379 * @return An array with the extension descriptors that are currently set on the |
| 380 * message. |
| 381 **/ |
| 382 - (NSArray *)extensionsCurrentlySet; |
| 383 |
| 384 /** |
| 385 * Checks whether there is an extension set on the message which matches the |
| 386 * given extension descriptor. |
| 387 * |
| 388 * @param extension Extension descriptor to check if it's set on the message. |
| 389 * |
| 390 * @return Whether the extension is currently set on the message. |
| 391 **/ |
262 - (BOOL)hasExtension:(GPBExtensionDescriptor *)extension; | 392 - (BOOL)hasExtension:(GPBExtensionDescriptor *)extension; |
263 | 393 |
264 /// Fetches the given extension's value for this message. | 394 /* |
265 /// | 395 * Fetches the given extension's value for this message. |
266 /// Extensions use boxed values (NSNumbers) for PODs and NSMutableArrays for | 396 * |
267 /// repeated fields. If the extension is a Message one will be auto created for
you | 397 * Extensions use boxed values (NSNumbers) for PODs and NSMutableArrays for |
268 /// and returned similar to fields. | 398 * repeated fields. If the extension is a Message one will be auto created for |
| 399 * you and returned similar to fields. |
| 400 * |
| 401 * @param extension The extension descriptor of the extension to fetch. |
| 402 * |
| 403 * @return The extension matching the given descriptor, or nil if none found. |
| 404 **/ |
269 - (nullable id)getExtension:(GPBExtensionDescriptor *)extension; | 405 - (nullable id)getExtension:(GPBExtensionDescriptor *)extension; |
270 | 406 |
271 /// Sets the given extension's value for this message. This is only for single | 407 /** |
272 /// field extensions (i.e. - not repeated fields). | 408 * Sets the given extension's value for this message. This only applies for |
273 /// | 409 * single field extensions (i.e. - not repeated fields). |
274 /// Extensions use boxed values (@c NSNumbers). | 410 * |
275 - (void)setExtension:(GPBExtensionDescriptor *)extension value:(nullable id)valu
e; | 411 * Extensions use boxed values (NSNumbers). |
276 | 412 * |
277 /// Adds the given value to the extension for this message. This is only for | 413 * @param extension The extension descriptor under which to set the value. |
278 /// repeated field extensions. If the field is a repeated POD type the @c value | 414 * @param value The value to be set as the extension. |
279 /// is a @c NSNumber. | 415 **/ |
| 416 - (void)setExtension:(GPBExtensionDescriptor *)extension |
| 417 value:(nullable id)value; |
| 418 |
| 419 /** |
| 420 * Adds the given value to the extension for this message. This only applies |
| 421 * to repeated field extensions. If the field is a repeated POD type, the value |
| 422 * should be an NSNumber. |
| 423 * |
| 424 * @param extension The extension descriptor under which to add the value. |
| 425 * @param value The value to be added to the repeated extension. |
| 426 **/ |
280 - (void)addExtension:(GPBExtensionDescriptor *)extension value:(id)value; | 427 - (void)addExtension:(GPBExtensionDescriptor *)extension value:(id)value; |
281 | 428 |
282 /// Replaces the given value at an index for the extension on this message. This | 429 /** |
283 /// is only for repeated field extensions. If the field is a repeated POD type | 430 * Replaces the value at the given index with the given value for the extension |
284 /// the @c value is a @c NSNumber. | 431 * on this message. This only applies to repeated field extensions. If the field |
| 432 * is a repeated POD type, the value is should be an NSNumber. |
| 433 * |
| 434 * @param extension The extension descriptor under which to replace the value. |
| 435 * @param index The index of the extension to be replaced. |
| 436 * @param value The value to be replaced in the repeated extension. |
| 437 **/ |
285 - (void)setExtension:(GPBExtensionDescriptor *)extension | 438 - (void)setExtension:(GPBExtensionDescriptor *)extension |
286 index:(NSUInteger)index | 439 index:(NSUInteger)index |
287 value:(id)value; | 440 value:(id)value; |
288 | 441 |
289 /// Clears the given extension for this message. | 442 /** |
| 443 * Clears the given extension for this message. |
| 444 * |
| 445 * @param extension The extension descriptor to be cleared from this message. |
| 446 **/ |
290 - (void)clearExtension:(GPBExtensionDescriptor *)extension; | 447 - (void)clearExtension:(GPBExtensionDescriptor *)extension; |
291 | 448 |
292 /// Resets all of the fields of this message to their default values. | 449 /** |
| 450 * Resets all of the fields of this message to their default values. |
| 451 **/ |
293 - (void)clear; | 452 - (void)clear; |
294 | 453 |
295 /// Parses a message of this type from the input and merges it with this | |
296 /// message. | |
297 /// | |
298 /// @note This will throw if there is an error parsing the data. | |
299 - (void)mergeFromData:(NSData *)data | |
300 extensionRegistry:(nullable GPBExtensionRegistry *)extensionRegistry; | |
301 | |
302 /// Merges the fields from another message (of the same type) into this | |
303 /// message. | |
304 - (void)mergeFrom:(GPBMessage *)other; | |
305 | |
306 @end | 454 @end |
307 | 455 |
308 NS_ASSUME_NONNULL_END | 456 NS_ASSUME_NONNULL_END |
OLD | NEW |