OLD | NEW |
| (Empty) |
1 // Protocol Buffers - Google's data interchange format | |
2 // Copyright 2008 Google Inc. All rights reserved. | |
3 // https://developers.google.com/protocol-buffers/ | |
4 // | |
5 // Redistribution and use in source and binary forms, with or without | |
6 // modification, are permitted provided that the following conditions are | |
7 // met: | |
8 // | |
9 // * Redistributions of source code must retain the above copyright | |
10 // notice, this list of conditions and the following disclaimer. | |
11 // * Redistributions in binary form must reproduce the above | |
12 // copyright notice, this list of conditions and the following disclaimer | |
13 // in the documentation and/or other materials provided with the | |
14 // distribution. | |
15 // * Neither the name of Google Inc. nor the names of its | |
16 // contributors may be used to endorse or promote products derived from | |
17 // this software without specific prior written permission. | |
18 // | |
19 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | |
20 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | |
21 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | |
22 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT | |
23 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | |
24 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | |
25 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | |
26 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | |
27 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | |
28 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | |
29 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |
30 | |
31 #import <Foundation/Foundation.h> | |
32 | |
33 #import "GPBDictionary.h" | |
34 | |
35 @class GPBCodedInputStream; | |
36 @class GPBCodedOutputStream; | |
37 @class GPBExtensionRegistry; | |
38 @class GPBFieldDescriptor; | |
39 | |
40 @protocol GPBDictionaryInternalsProtocol | |
41 - (size_t)computeSerializedSizeAsField:(GPBFieldDescriptor *)field; | |
42 - (void)writeToCodedOutputStream:(GPBCodedOutputStream *)outputStream | |
43 asField:(GPBFieldDescriptor *)field; | |
44 - (void)setGPBGenericValue:(GPBGenericValue *)value | |
45 forGPBGenericValueKey:(GPBGenericValue *)key; | |
46 - (void)enumerateForTextFormat:(void (^)(id keyObj, id valueObj))block; | |
47 @end | |
48 | |
49 //%PDDM-DEFINE DICTIONARY_PRIV_INTERFACES_FOR_POD_KEY(KEY_NAME) | |
50 //%DICTIONARY_POD_PRIV_INTERFACES_FOR_KEY(KEY_NAME) | |
51 //%DICTIONARY_PRIVATE_INTERFACES(KEY_NAME, Object, Object) | |
52 //%PDDM-DEFINE DICTIONARY_POD_PRIV_INTERFACES_FOR_KEY(KEY_NAME) | |
53 //%DICTIONARY_PRIVATE_INTERFACES(KEY_NAME, UInt32, Basic) | |
54 //%DICTIONARY_PRIVATE_INTERFACES(KEY_NAME, Int32, Basic) | |
55 //%DICTIONARY_PRIVATE_INTERFACES(KEY_NAME, UInt64, Basic) | |
56 //%DICTIONARY_PRIVATE_INTERFACES(KEY_NAME, Int64, Basic) | |
57 //%DICTIONARY_PRIVATE_INTERFACES(KEY_NAME, Bool, Basic) | |
58 //%DICTIONARY_PRIVATE_INTERFACES(KEY_NAME, Float, Basic) | |
59 //%DICTIONARY_PRIVATE_INTERFACES(KEY_NAME, Double, Basic) | |
60 //%DICTIONARY_PRIVATE_INTERFACES(KEY_NAME, Enum, Enum) | |
61 | |
62 //%PDDM-DEFINE DICTIONARY_PRIVATE_INTERFACES(KEY_NAME, VALUE_NAME, HELPER) | |
63 //%@interface GPB##KEY_NAME##VALUE_NAME##Dictionary () <GPBDictionaryInternalsPr
otocol> { | |
64 //% @package | |
65 //% GPB_UNSAFE_UNRETAINED GPBMessage *_autocreator; | |
66 //%} | |
67 //%EXTRA_DICTIONARY_PRIVATE_INTERFACES_##HELPER()@end | |
68 //% | |
69 | |
70 //%PDDM-DEFINE EXTRA_DICTIONARY_PRIVATE_INTERFACES_Basic() | |
71 // Empty | |
72 //%PDDM-DEFINE EXTRA_DICTIONARY_PRIVATE_INTERFACES_Object() | |
73 //%- (BOOL)isInitialized; | |
74 //%- (instancetype)deepCopyWithZone:(NSZone *)zone | |
75 //% __attribute__((ns_returns_retained)); | |
76 //% | |
77 //%PDDM-DEFINE EXTRA_DICTIONARY_PRIVATE_INTERFACES_Enum() | |
78 //%- (NSData *)serializedDataForUnknownValue:(int32_t)value | |
79 //% forKey:(GPBGenericValue *)key | |
80 //% keyDataType:(GPBDataType)keyDataType; | |
81 //% | |
82 | |
83 //%PDDM-EXPAND DICTIONARY_PRIV_INTERFACES_FOR_POD_KEY(UInt32) | |
84 // This block of code is generated, do not edit it directly. | |
85 | |
86 @interface GPBUInt32UInt32Dictionary () <GPBDictionaryInternalsProtocol> { | |
87 @package | |
88 GPB_UNSAFE_UNRETAINED GPBMessage *_autocreator; | |
89 } | |
90 @end | |
91 | |
92 @interface GPBUInt32Int32Dictionary () <GPBDictionaryInternalsProtocol> { | |
93 @package | |
94 GPB_UNSAFE_UNRETAINED GPBMessage *_autocreator; | |
95 } | |
96 @end | |
97 | |
98 @interface GPBUInt32UInt64Dictionary () <GPBDictionaryInternalsProtocol> { | |
99 @package | |
100 GPB_UNSAFE_UNRETAINED GPBMessage *_autocreator; | |
101 } | |
102 @end | |
103 | |
104 @interface GPBUInt32Int64Dictionary () <GPBDictionaryInternalsProtocol> { | |
105 @package | |
106 GPB_UNSAFE_UNRETAINED GPBMessage *_autocreator; | |
107 } | |
108 @end | |
109 | |
110 @interface GPBUInt32BoolDictionary () <GPBDictionaryInternalsProtocol> { | |
111 @package | |
112 GPB_UNSAFE_UNRETAINED GPBMessage *_autocreator; | |
113 } | |
114 @end | |
115 | |
116 @interface GPBUInt32FloatDictionary () <GPBDictionaryInternalsProtocol> { | |
117 @package | |
118 GPB_UNSAFE_UNRETAINED GPBMessage *_autocreator; | |
119 } | |
120 @end | |
121 | |
122 @interface GPBUInt32DoubleDictionary () <GPBDictionaryInternalsProtocol> { | |
123 @package | |
124 GPB_UNSAFE_UNRETAINED GPBMessage *_autocreator; | |
125 } | |
126 @end | |
127 | |
128 @interface GPBUInt32EnumDictionary () <GPBDictionaryInternalsProtocol> { | |
129 @package | |
130 GPB_UNSAFE_UNRETAINED GPBMessage *_autocreator; | |
131 } | |
132 - (NSData *)serializedDataForUnknownValue:(int32_t)value | |
133 forKey:(GPBGenericValue *)key | |
134 keyDataType:(GPBDataType)keyDataType; | |
135 @end | |
136 | |
137 @interface GPBUInt32ObjectDictionary () <GPBDictionaryInternalsProtocol> { | |
138 @package | |
139 GPB_UNSAFE_UNRETAINED GPBMessage *_autocreator; | |
140 } | |
141 - (BOOL)isInitialized; | |
142 - (instancetype)deepCopyWithZone:(NSZone *)zone | |
143 __attribute__((ns_returns_retained)); | |
144 @end | |
145 | |
146 //%PDDM-EXPAND DICTIONARY_PRIV_INTERFACES_FOR_POD_KEY(Int32) | |
147 // This block of code is generated, do not edit it directly. | |
148 | |
149 @interface GPBInt32UInt32Dictionary () <GPBDictionaryInternalsProtocol> { | |
150 @package | |
151 GPB_UNSAFE_UNRETAINED GPBMessage *_autocreator; | |
152 } | |
153 @end | |
154 | |
155 @interface GPBInt32Int32Dictionary () <GPBDictionaryInternalsProtocol> { | |
156 @package | |
157 GPB_UNSAFE_UNRETAINED GPBMessage *_autocreator; | |
158 } | |
159 @end | |
160 | |
161 @interface GPBInt32UInt64Dictionary () <GPBDictionaryInternalsProtocol> { | |
162 @package | |
163 GPB_UNSAFE_UNRETAINED GPBMessage *_autocreator; | |
164 } | |
165 @end | |
166 | |
167 @interface GPBInt32Int64Dictionary () <GPBDictionaryInternalsProtocol> { | |
168 @package | |
169 GPB_UNSAFE_UNRETAINED GPBMessage *_autocreator; | |
170 } | |
171 @end | |
172 | |
173 @interface GPBInt32BoolDictionary () <GPBDictionaryInternalsProtocol> { | |
174 @package | |
175 GPB_UNSAFE_UNRETAINED GPBMessage *_autocreator; | |
176 } | |
177 @end | |
178 | |
179 @interface GPBInt32FloatDictionary () <GPBDictionaryInternalsProtocol> { | |
180 @package | |
181 GPB_UNSAFE_UNRETAINED GPBMessage *_autocreator; | |
182 } | |
183 @end | |
184 | |
185 @interface GPBInt32DoubleDictionary () <GPBDictionaryInternalsProtocol> { | |
186 @package | |
187 GPB_UNSAFE_UNRETAINED GPBMessage *_autocreator; | |
188 } | |
189 @end | |
190 | |
191 @interface GPBInt32EnumDictionary () <GPBDictionaryInternalsProtocol> { | |
192 @package | |
193 GPB_UNSAFE_UNRETAINED GPBMessage *_autocreator; | |
194 } | |
195 - (NSData *)serializedDataForUnknownValue:(int32_t)value | |
196 forKey:(GPBGenericValue *)key | |
197 keyDataType:(GPBDataType)keyDataType; | |
198 @end | |
199 | |
200 @interface GPBInt32ObjectDictionary () <GPBDictionaryInternalsProtocol> { | |
201 @package | |
202 GPB_UNSAFE_UNRETAINED GPBMessage *_autocreator; | |
203 } | |
204 - (BOOL)isInitialized; | |
205 - (instancetype)deepCopyWithZone:(NSZone *)zone | |
206 __attribute__((ns_returns_retained)); | |
207 @end | |
208 | |
209 //%PDDM-EXPAND DICTIONARY_PRIV_INTERFACES_FOR_POD_KEY(UInt64) | |
210 // This block of code is generated, do not edit it directly. | |
211 | |
212 @interface GPBUInt64UInt32Dictionary () <GPBDictionaryInternalsProtocol> { | |
213 @package | |
214 GPB_UNSAFE_UNRETAINED GPBMessage *_autocreator; | |
215 } | |
216 @end | |
217 | |
218 @interface GPBUInt64Int32Dictionary () <GPBDictionaryInternalsProtocol> { | |
219 @package | |
220 GPB_UNSAFE_UNRETAINED GPBMessage *_autocreator; | |
221 } | |
222 @end | |
223 | |
224 @interface GPBUInt64UInt64Dictionary () <GPBDictionaryInternalsProtocol> { | |
225 @package | |
226 GPB_UNSAFE_UNRETAINED GPBMessage *_autocreator; | |
227 } | |
228 @end | |
229 | |
230 @interface GPBUInt64Int64Dictionary () <GPBDictionaryInternalsProtocol> { | |
231 @package | |
232 GPB_UNSAFE_UNRETAINED GPBMessage *_autocreator; | |
233 } | |
234 @end | |
235 | |
236 @interface GPBUInt64BoolDictionary () <GPBDictionaryInternalsProtocol> { | |
237 @package | |
238 GPB_UNSAFE_UNRETAINED GPBMessage *_autocreator; | |
239 } | |
240 @end | |
241 | |
242 @interface GPBUInt64FloatDictionary () <GPBDictionaryInternalsProtocol> { | |
243 @package | |
244 GPB_UNSAFE_UNRETAINED GPBMessage *_autocreator; | |
245 } | |
246 @end | |
247 | |
248 @interface GPBUInt64DoubleDictionary () <GPBDictionaryInternalsProtocol> { | |
249 @package | |
250 GPB_UNSAFE_UNRETAINED GPBMessage *_autocreator; | |
251 } | |
252 @end | |
253 | |
254 @interface GPBUInt64EnumDictionary () <GPBDictionaryInternalsProtocol> { | |
255 @package | |
256 GPB_UNSAFE_UNRETAINED GPBMessage *_autocreator; | |
257 } | |
258 - (NSData *)serializedDataForUnknownValue:(int32_t)value | |
259 forKey:(GPBGenericValue *)key | |
260 keyDataType:(GPBDataType)keyDataType; | |
261 @end | |
262 | |
263 @interface GPBUInt64ObjectDictionary () <GPBDictionaryInternalsProtocol> { | |
264 @package | |
265 GPB_UNSAFE_UNRETAINED GPBMessage *_autocreator; | |
266 } | |
267 - (BOOL)isInitialized; | |
268 - (instancetype)deepCopyWithZone:(NSZone *)zone | |
269 __attribute__((ns_returns_retained)); | |
270 @end | |
271 | |
272 //%PDDM-EXPAND DICTIONARY_PRIV_INTERFACES_FOR_POD_KEY(Int64) | |
273 // This block of code is generated, do not edit it directly. | |
274 | |
275 @interface GPBInt64UInt32Dictionary () <GPBDictionaryInternalsProtocol> { | |
276 @package | |
277 GPB_UNSAFE_UNRETAINED GPBMessage *_autocreator; | |
278 } | |
279 @end | |
280 | |
281 @interface GPBInt64Int32Dictionary () <GPBDictionaryInternalsProtocol> { | |
282 @package | |
283 GPB_UNSAFE_UNRETAINED GPBMessage *_autocreator; | |
284 } | |
285 @end | |
286 | |
287 @interface GPBInt64UInt64Dictionary () <GPBDictionaryInternalsProtocol> { | |
288 @package | |
289 GPB_UNSAFE_UNRETAINED GPBMessage *_autocreator; | |
290 } | |
291 @end | |
292 | |
293 @interface GPBInt64Int64Dictionary () <GPBDictionaryInternalsProtocol> { | |
294 @package | |
295 GPB_UNSAFE_UNRETAINED GPBMessage *_autocreator; | |
296 } | |
297 @end | |
298 | |
299 @interface GPBInt64BoolDictionary () <GPBDictionaryInternalsProtocol> { | |
300 @package | |
301 GPB_UNSAFE_UNRETAINED GPBMessage *_autocreator; | |
302 } | |
303 @end | |
304 | |
305 @interface GPBInt64FloatDictionary () <GPBDictionaryInternalsProtocol> { | |
306 @package | |
307 GPB_UNSAFE_UNRETAINED GPBMessage *_autocreator; | |
308 } | |
309 @end | |
310 | |
311 @interface GPBInt64DoubleDictionary () <GPBDictionaryInternalsProtocol> { | |
312 @package | |
313 GPB_UNSAFE_UNRETAINED GPBMessage *_autocreator; | |
314 } | |
315 @end | |
316 | |
317 @interface GPBInt64EnumDictionary () <GPBDictionaryInternalsProtocol> { | |
318 @package | |
319 GPB_UNSAFE_UNRETAINED GPBMessage *_autocreator; | |
320 } | |
321 - (NSData *)serializedDataForUnknownValue:(int32_t)value | |
322 forKey:(GPBGenericValue *)key | |
323 keyDataType:(GPBDataType)keyDataType; | |
324 @end | |
325 | |
326 @interface GPBInt64ObjectDictionary () <GPBDictionaryInternalsProtocol> { | |
327 @package | |
328 GPB_UNSAFE_UNRETAINED GPBMessage *_autocreator; | |
329 } | |
330 - (BOOL)isInitialized; | |
331 - (instancetype)deepCopyWithZone:(NSZone *)zone | |
332 __attribute__((ns_returns_retained)); | |
333 @end | |
334 | |
335 //%PDDM-EXPAND DICTIONARY_PRIV_INTERFACES_FOR_POD_KEY(Bool) | |
336 // This block of code is generated, do not edit it directly. | |
337 | |
338 @interface GPBBoolUInt32Dictionary () <GPBDictionaryInternalsProtocol> { | |
339 @package | |
340 GPB_UNSAFE_UNRETAINED GPBMessage *_autocreator; | |
341 } | |
342 @end | |
343 | |
344 @interface GPBBoolInt32Dictionary () <GPBDictionaryInternalsProtocol> { | |
345 @package | |
346 GPB_UNSAFE_UNRETAINED GPBMessage *_autocreator; | |
347 } | |
348 @end | |
349 | |
350 @interface GPBBoolUInt64Dictionary () <GPBDictionaryInternalsProtocol> { | |
351 @package | |
352 GPB_UNSAFE_UNRETAINED GPBMessage *_autocreator; | |
353 } | |
354 @end | |
355 | |
356 @interface GPBBoolInt64Dictionary () <GPBDictionaryInternalsProtocol> { | |
357 @package | |
358 GPB_UNSAFE_UNRETAINED GPBMessage *_autocreator; | |
359 } | |
360 @end | |
361 | |
362 @interface GPBBoolBoolDictionary () <GPBDictionaryInternalsProtocol> { | |
363 @package | |
364 GPB_UNSAFE_UNRETAINED GPBMessage *_autocreator; | |
365 } | |
366 @end | |
367 | |
368 @interface GPBBoolFloatDictionary () <GPBDictionaryInternalsProtocol> { | |
369 @package | |
370 GPB_UNSAFE_UNRETAINED GPBMessage *_autocreator; | |
371 } | |
372 @end | |
373 | |
374 @interface GPBBoolDoubleDictionary () <GPBDictionaryInternalsProtocol> { | |
375 @package | |
376 GPB_UNSAFE_UNRETAINED GPBMessage *_autocreator; | |
377 } | |
378 @end | |
379 | |
380 @interface GPBBoolEnumDictionary () <GPBDictionaryInternalsProtocol> { | |
381 @package | |
382 GPB_UNSAFE_UNRETAINED GPBMessage *_autocreator; | |
383 } | |
384 - (NSData *)serializedDataForUnknownValue:(int32_t)value | |
385 forKey:(GPBGenericValue *)key | |
386 keyDataType:(GPBDataType)keyDataType; | |
387 @end | |
388 | |
389 @interface GPBBoolObjectDictionary () <GPBDictionaryInternalsProtocol> { | |
390 @package | |
391 GPB_UNSAFE_UNRETAINED GPBMessage *_autocreator; | |
392 } | |
393 - (BOOL)isInitialized; | |
394 - (instancetype)deepCopyWithZone:(NSZone *)zone | |
395 __attribute__((ns_returns_retained)); | |
396 @end | |
397 | |
398 //%PDDM-EXPAND DICTIONARY_POD_PRIV_INTERFACES_FOR_KEY(String) | |
399 // This block of code is generated, do not edit it directly. | |
400 | |
401 @interface GPBStringUInt32Dictionary () <GPBDictionaryInternalsProtocol> { | |
402 @package | |
403 GPB_UNSAFE_UNRETAINED GPBMessage *_autocreator; | |
404 } | |
405 @end | |
406 | |
407 @interface GPBStringInt32Dictionary () <GPBDictionaryInternalsProtocol> { | |
408 @package | |
409 GPB_UNSAFE_UNRETAINED GPBMessage *_autocreator; | |
410 } | |
411 @end | |
412 | |
413 @interface GPBStringUInt64Dictionary () <GPBDictionaryInternalsProtocol> { | |
414 @package | |
415 GPB_UNSAFE_UNRETAINED GPBMessage *_autocreator; | |
416 } | |
417 @end | |
418 | |
419 @interface GPBStringInt64Dictionary () <GPBDictionaryInternalsProtocol> { | |
420 @package | |
421 GPB_UNSAFE_UNRETAINED GPBMessage *_autocreator; | |
422 } | |
423 @end | |
424 | |
425 @interface GPBStringBoolDictionary () <GPBDictionaryInternalsProtocol> { | |
426 @package | |
427 GPB_UNSAFE_UNRETAINED GPBMessage *_autocreator; | |
428 } | |
429 @end | |
430 | |
431 @interface GPBStringFloatDictionary () <GPBDictionaryInternalsProtocol> { | |
432 @package | |
433 GPB_UNSAFE_UNRETAINED GPBMessage *_autocreator; | |
434 } | |
435 @end | |
436 | |
437 @interface GPBStringDoubleDictionary () <GPBDictionaryInternalsProtocol> { | |
438 @package | |
439 GPB_UNSAFE_UNRETAINED GPBMessage *_autocreator; | |
440 } | |
441 @end | |
442 | |
443 @interface GPBStringEnumDictionary () <GPBDictionaryInternalsProtocol> { | |
444 @package | |
445 GPB_UNSAFE_UNRETAINED GPBMessage *_autocreator; | |
446 } | |
447 - (NSData *)serializedDataForUnknownValue:(int32_t)value | |
448 forKey:(GPBGenericValue *)key | |
449 keyDataType:(GPBDataType)keyDataType; | |
450 @end | |
451 | |
452 //%PDDM-EXPAND-END (6 expansions) | |
453 | |
454 #pragma mark - NSDictionary Subclass | |
455 | |
456 @interface GPBAutocreatedDictionary : NSMutableDictionary { | |
457 @package | |
458 GPB_UNSAFE_UNRETAINED GPBMessage *_autocreator; | |
459 } | |
460 @end | |
461 | |
462 #pragma mark - Helpers | |
463 | |
464 CF_EXTERN_C_BEGIN | |
465 | |
466 // Helper to compute size when an NSDictionary is used for the map instead | |
467 // of a custom type. | |
468 size_t GPBDictionaryComputeSizeInternalHelper(NSDictionary *dict, | |
469 GPBFieldDescriptor *field); | |
470 | |
471 // Helper to write out when an NSDictionary is used for the map instead | |
472 // of a custom type. | |
473 void GPBDictionaryWriteToStreamInternalHelper( | |
474 GPBCodedOutputStream *outputStream, NSDictionary *dict, | |
475 GPBFieldDescriptor *field); | |
476 | |
477 // Helper to check message initialization when an NSDictionary is used for | |
478 // the map instead of a custom type. | |
479 BOOL GPBDictionaryIsInitializedInternalHelper(NSDictionary *dict, | |
480 GPBFieldDescriptor *field); | |
481 | |
482 // Helper to read a map instead. | |
483 void GPBDictionaryReadEntry(id mapDictionary, GPBCodedInputStream *stream, | |
484 GPBExtensionRegistry *registry, | |
485 GPBFieldDescriptor *field, | |
486 GPBMessage *parentMessage); | |
487 | |
488 CF_EXTERN_C_END | |
OLD | NEW |