Added Android code
[wl-app.git] / iOS / Pods / Protobuf / objectivec / GPBDictionary_PackagePrivate.h
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 () <GPBDictionaryInternalsProtocol> {
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