GPBArray.h revision b0575e93e4c39dec69365b850088a1eb7f82c5b3
1b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer// Protocol Buffers - Google's data interchange format
2b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer// Copyright 2015 Google Inc.  All rights reserved.
3b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer// https://developers.google.com/protocol-buffers/
4b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//
5b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer// Redistribution and use in source and binary forms, with or without
6b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer// modification, are permitted provided that the following conditions are
7b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer// met:
8b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//
9b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//     * Redistributions of source code must retain the above copyright
10b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer// notice, this list of conditions and the following disclaimer.
11b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//     * Redistributions in binary form must reproduce the above
12b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer// copyright notice, this list of conditions and the following disclaimer
13b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer// in the documentation and/or other materials provided with the
14b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer// distribution.
15b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//     * Neither the name of Google Inc. nor the names of its
16b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer// contributors may be used to endorse or promote products derived from
17b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer// this software without specific prior written permission.
18b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//
19b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
23b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
31b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer#import <Foundation/Foundation.h>
32b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
33b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer#import "GPBRuntimeTypes.h"
34b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
35b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer// These classes are used for repeated fields of basic data types. They are used because
36b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer// they perform better than boxing into NSNumbers in NSArrays.
37b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
38b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer// Note: These are not meant to be subclassed.
39b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
40b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas BerghammerNS_ASSUME_NONNULL_BEGIN
41b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
42b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%PDDM-EXPAND DECLARE_ARRAYS()
43b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer// This block of code is generated, do not edit it directly.
44b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
45b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer#pragma mark - Int32
46b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
47b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer@interface GPBInt32Array : NSObject <NSCopying>
48b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
49b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer@property(nonatomic, readonly) NSUInteger count;
50b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
51b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer+ (instancetype)array;
52b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer+ (instancetype)arrayWithValue:(int32_t)value;
53b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer+ (instancetype)arrayWithValueArray:(GPBInt32Array *)array;
54b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer+ (instancetype)arrayWithCapacity:(NSUInteger)count;
55b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
56b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (instancetype)init NS_DESIGNATED_INITIALIZER;
57b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer// Initializes the array, copying the values.
58b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (instancetype)initWithValues:(const int32_t [])values
59b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer                         count:(NSUInteger)count;
60b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (instancetype)initWithValueArray:(GPBInt32Array *)array;
61b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (instancetype)initWithCapacity:(NSUInteger)count;
62b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
63b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (int32_t)valueAtIndex:(NSUInteger)index;
64b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
65b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (void)enumerateValuesWithBlock:(void (^)(int32_t value, NSUInteger idx, BOOL *stop))block;
66b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (void)enumerateValuesWithOptions:(NSEnumerationOptions)opts
67b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer                        usingBlock:(void (^)(int32_t value, NSUInteger idx, BOOL *stop))block;
68b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
69b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (void)addValue:(int32_t)value;
70b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (void)addValues:(const int32_t [])values count:(NSUInteger)count;
71b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (void)addValuesFromArray:(GPBInt32Array *)array;
72b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
73b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (void)insertValue:(int32_t)value atIndex:(NSUInteger)index;
74b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
75b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (void)replaceValueAtIndex:(NSUInteger)index withValue:(int32_t)value;
76b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
77b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (void)removeValueAtIndex:(NSUInteger)index;
78b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (void)removeAll;
79b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
80b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (void)exchangeValueAtIndex:(NSUInteger)idx1
81b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer            withValueAtIndex:(NSUInteger)idx2;
82b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
83b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer@end
84b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
85b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer#pragma mark - UInt32
86b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
87b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer@interface GPBUInt32Array : NSObject <NSCopying>
88b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
89b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer@property(nonatomic, readonly) NSUInteger count;
90b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
91b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer+ (instancetype)array;
92b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer+ (instancetype)arrayWithValue:(uint32_t)value;
93b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer+ (instancetype)arrayWithValueArray:(GPBUInt32Array *)array;
94b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer+ (instancetype)arrayWithCapacity:(NSUInteger)count;
95b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
96b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (instancetype)init NS_DESIGNATED_INITIALIZER;
97b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer// Initializes the array, copying the values.
98b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (instancetype)initWithValues:(const uint32_t [])values
99b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer                         count:(NSUInteger)count;
100b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (instancetype)initWithValueArray:(GPBUInt32Array *)array;
101b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (instancetype)initWithCapacity:(NSUInteger)count;
102b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
103b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (uint32_t)valueAtIndex:(NSUInteger)index;
104b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
105b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (void)enumerateValuesWithBlock:(void (^)(uint32_t value, NSUInteger idx, BOOL *stop))block;
106b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (void)enumerateValuesWithOptions:(NSEnumerationOptions)opts
107b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer                        usingBlock:(void (^)(uint32_t value, NSUInteger idx, BOOL *stop))block;
108b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
109b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (void)addValue:(uint32_t)value;
110b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (void)addValues:(const uint32_t [])values count:(NSUInteger)count;
111b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (void)addValuesFromArray:(GPBUInt32Array *)array;
112b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
113b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (void)insertValue:(uint32_t)value atIndex:(NSUInteger)index;
114b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
115b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (void)replaceValueAtIndex:(NSUInteger)index withValue:(uint32_t)value;
116b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
117b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (void)removeValueAtIndex:(NSUInteger)index;
118b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (void)removeAll;
119b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
120b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (void)exchangeValueAtIndex:(NSUInteger)idx1
121b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer            withValueAtIndex:(NSUInteger)idx2;
122b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
123b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer@end
124b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
125b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer#pragma mark - Int64
126b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
127b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer@interface GPBInt64Array : NSObject <NSCopying>
128b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
129b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer@property(nonatomic, readonly) NSUInteger count;
130b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
131b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer+ (instancetype)array;
132b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer+ (instancetype)arrayWithValue:(int64_t)value;
133b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer+ (instancetype)arrayWithValueArray:(GPBInt64Array *)array;
134b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer+ (instancetype)arrayWithCapacity:(NSUInteger)count;
135b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
136b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (instancetype)init NS_DESIGNATED_INITIALIZER;
137b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer// Initializes the array, copying the values.
138b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (instancetype)initWithValues:(const int64_t [])values
139b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer                         count:(NSUInteger)count;
140b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (instancetype)initWithValueArray:(GPBInt64Array *)array;
141b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (instancetype)initWithCapacity:(NSUInteger)count;
142b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
143b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (int64_t)valueAtIndex:(NSUInteger)index;
144b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
145b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (void)enumerateValuesWithBlock:(void (^)(int64_t value, NSUInteger idx, BOOL *stop))block;
146b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (void)enumerateValuesWithOptions:(NSEnumerationOptions)opts
147b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer                        usingBlock:(void (^)(int64_t value, NSUInteger idx, BOOL *stop))block;
148b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
149b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (void)addValue:(int64_t)value;
150b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (void)addValues:(const int64_t [])values count:(NSUInteger)count;
151b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (void)addValuesFromArray:(GPBInt64Array *)array;
152b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
153b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (void)insertValue:(int64_t)value atIndex:(NSUInteger)index;
154b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
155b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (void)replaceValueAtIndex:(NSUInteger)index withValue:(int64_t)value;
156b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
157b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (void)removeValueAtIndex:(NSUInteger)index;
158b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (void)removeAll;
159b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
160b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (void)exchangeValueAtIndex:(NSUInteger)idx1
161b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer            withValueAtIndex:(NSUInteger)idx2;
162b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
163b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer@end
164b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
165b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer#pragma mark - UInt64
166b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
167b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer@interface GPBUInt64Array : NSObject <NSCopying>
168b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
169b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer@property(nonatomic, readonly) NSUInteger count;
170b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
171b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer+ (instancetype)array;
172b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer+ (instancetype)arrayWithValue:(uint64_t)value;
173b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer+ (instancetype)arrayWithValueArray:(GPBUInt64Array *)array;
174b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer+ (instancetype)arrayWithCapacity:(NSUInteger)count;
175b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
176b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (instancetype)init NS_DESIGNATED_INITIALIZER;
177b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer// Initializes the array, copying the values.
178b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (instancetype)initWithValues:(const uint64_t [])values
179b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer                         count:(NSUInteger)count;
180b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (instancetype)initWithValueArray:(GPBUInt64Array *)array;
181b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (instancetype)initWithCapacity:(NSUInteger)count;
182b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
183b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (uint64_t)valueAtIndex:(NSUInteger)index;
184b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
185b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (void)enumerateValuesWithBlock:(void (^)(uint64_t value, NSUInteger idx, BOOL *stop))block;
186b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (void)enumerateValuesWithOptions:(NSEnumerationOptions)opts
187b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer                        usingBlock:(void (^)(uint64_t value, NSUInteger idx, BOOL *stop))block;
188b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
189b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (void)addValue:(uint64_t)value;
190b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (void)addValues:(const uint64_t [])values count:(NSUInteger)count;
191b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (void)addValuesFromArray:(GPBUInt64Array *)array;
192b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
193b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (void)insertValue:(uint64_t)value atIndex:(NSUInteger)index;
194b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
195b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (void)replaceValueAtIndex:(NSUInteger)index withValue:(uint64_t)value;
196b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
197b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (void)removeValueAtIndex:(NSUInteger)index;
198b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (void)removeAll;
199b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
200b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (void)exchangeValueAtIndex:(NSUInteger)idx1
201b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer            withValueAtIndex:(NSUInteger)idx2;
202b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
203b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer@end
204b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
205b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer#pragma mark - Float
206b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
207b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer@interface GPBFloatArray : NSObject <NSCopying>
208b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
209b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer@property(nonatomic, readonly) NSUInteger count;
210b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
211b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer+ (instancetype)array;
212b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer+ (instancetype)arrayWithValue:(float)value;
213b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer+ (instancetype)arrayWithValueArray:(GPBFloatArray *)array;
214b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer+ (instancetype)arrayWithCapacity:(NSUInteger)count;
215b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
216b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (instancetype)init NS_DESIGNATED_INITIALIZER;
217b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer// Initializes the array, copying the values.
218b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (instancetype)initWithValues:(const float [])values
219b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer                         count:(NSUInteger)count;
220b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (instancetype)initWithValueArray:(GPBFloatArray *)array;
221b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (instancetype)initWithCapacity:(NSUInteger)count;
222b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
223b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (float)valueAtIndex:(NSUInteger)index;
224b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
225b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (void)enumerateValuesWithBlock:(void (^)(float value, NSUInteger idx, BOOL *stop))block;
226b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (void)enumerateValuesWithOptions:(NSEnumerationOptions)opts
227b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer                        usingBlock:(void (^)(float value, NSUInteger idx, BOOL *stop))block;
228b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
229b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (void)addValue:(float)value;
230b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (void)addValues:(const float [])values count:(NSUInteger)count;
231b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (void)addValuesFromArray:(GPBFloatArray *)array;
232b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
233b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (void)insertValue:(float)value atIndex:(NSUInteger)index;
234b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
235b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (void)replaceValueAtIndex:(NSUInteger)index withValue:(float)value;
236b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
237b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (void)removeValueAtIndex:(NSUInteger)index;
238b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (void)removeAll;
239b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
240b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (void)exchangeValueAtIndex:(NSUInteger)idx1
241b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer            withValueAtIndex:(NSUInteger)idx2;
242b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
243b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer@end
244b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
245b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer#pragma mark - Double
246b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
247b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer@interface GPBDoubleArray : NSObject <NSCopying>
248b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
249b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer@property(nonatomic, readonly) NSUInteger count;
250b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
251b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer+ (instancetype)array;
252b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer+ (instancetype)arrayWithValue:(double)value;
253b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer+ (instancetype)arrayWithValueArray:(GPBDoubleArray *)array;
254b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer+ (instancetype)arrayWithCapacity:(NSUInteger)count;
255b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
256b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (instancetype)init NS_DESIGNATED_INITIALIZER;
257b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer// Initializes the array, copying the values.
258b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (instancetype)initWithValues:(const double [])values
259b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer                         count:(NSUInteger)count;
260b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (instancetype)initWithValueArray:(GPBDoubleArray *)array;
261b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (instancetype)initWithCapacity:(NSUInteger)count;
262b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
263b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (double)valueAtIndex:(NSUInteger)index;
264b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
265b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (void)enumerateValuesWithBlock:(void (^)(double value, NSUInteger idx, BOOL *stop))block;
266b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (void)enumerateValuesWithOptions:(NSEnumerationOptions)opts
267b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer                        usingBlock:(void (^)(double value, NSUInteger idx, BOOL *stop))block;
268b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
269b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (void)addValue:(double)value;
270b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (void)addValues:(const double [])values count:(NSUInteger)count;
271b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (void)addValuesFromArray:(GPBDoubleArray *)array;
272b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
273b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (void)insertValue:(double)value atIndex:(NSUInteger)index;
274b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
275b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (void)replaceValueAtIndex:(NSUInteger)index withValue:(double)value;
276b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
277b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (void)removeValueAtIndex:(NSUInteger)index;
278b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (void)removeAll;
279b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
280b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (void)exchangeValueAtIndex:(NSUInteger)idx1
281b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer            withValueAtIndex:(NSUInteger)idx2;
282b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
283b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer@end
284b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
285b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer#pragma mark - Bool
286b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
287b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer@interface GPBBoolArray : NSObject <NSCopying>
288b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
289b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer@property(nonatomic, readonly) NSUInteger count;
290b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
291b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer+ (instancetype)array;
292b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer+ (instancetype)arrayWithValue:(BOOL)value;
293b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer+ (instancetype)arrayWithValueArray:(GPBBoolArray *)array;
294b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer+ (instancetype)arrayWithCapacity:(NSUInteger)count;
295b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
296b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (instancetype)init NS_DESIGNATED_INITIALIZER;
297b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer// Initializes the array, copying the values.
298b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (instancetype)initWithValues:(const BOOL [])values
299b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer                         count:(NSUInteger)count;
300b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (instancetype)initWithValueArray:(GPBBoolArray *)array;
301b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (instancetype)initWithCapacity:(NSUInteger)count;
302b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
303b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (BOOL)valueAtIndex:(NSUInteger)index;
304b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
305b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (void)enumerateValuesWithBlock:(void (^)(BOOL value, NSUInteger idx, BOOL *stop))block;
306b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (void)enumerateValuesWithOptions:(NSEnumerationOptions)opts
307b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer                        usingBlock:(void (^)(BOOL value, NSUInteger idx, BOOL *stop))block;
308b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
309b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (void)addValue:(BOOL)value;
310b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (void)addValues:(const BOOL [])values count:(NSUInteger)count;
311b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (void)addValuesFromArray:(GPBBoolArray *)array;
312b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
313b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (void)insertValue:(BOOL)value atIndex:(NSUInteger)index;
314b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
315b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (void)replaceValueAtIndex:(NSUInteger)index withValue:(BOOL)value;
316b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
317b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (void)removeValueAtIndex:(NSUInteger)index;
318b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (void)removeAll;
319b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
320b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (void)exchangeValueAtIndex:(NSUInteger)idx1
321b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer            withValueAtIndex:(NSUInteger)idx2;
322b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
323b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer@end
324b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
325b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer#pragma mark - Enum
326b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
327b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer@interface GPBEnumArray : NSObject <NSCopying>
328b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
329b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer@property(nonatomic, readonly) NSUInteger count;
330b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer@property(nonatomic, readonly) GPBEnumValidationFunc validationFunc;
331b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
332b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer+ (instancetype)array;
333b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer+ (instancetype)arrayWithValidationFunction:(nullable GPBEnumValidationFunc)func;
334b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer+ (instancetype)arrayWithValidationFunction:(nullable GPBEnumValidationFunc)func
335b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer                                   rawValue:(int32_t)value;
336b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer+ (instancetype)arrayWithValueArray:(GPBEnumArray *)array;
337b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer+ (instancetype)arrayWithValidationFunction:(nullable GPBEnumValidationFunc)func
338b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer                                   capacity:(NSUInteger)count;
339b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
340b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (instancetype)initWithValidationFunction:(nullable GPBEnumValidationFunc)func
341b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer    NS_DESIGNATED_INITIALIZER;
342b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
343b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer// Initializes the array, copying the values.
344b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (instancetype)initWithValidationFunction:(nullable GPBEnumValidationFunc)func
345b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer                                 rawValues:(const int32_t [])values
346b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer                                     count:(NSUInteger)count;
347b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (instancetype)initWithValueArray:(GPBEnumArray *)array;
348b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (instancetype)initWithValidationFunction:(nullable GPBEnumValidationFunc)func
349b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer                                  capacity:(NSUInteger)count;
350b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
351b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer// These will return kGPBUnrecognizedEnumeratorValue if the value at index is not a
352b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer// valid enumerator as defined by validationFunc. If the actual value is
353b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer// desired, use "raw" version of the method.
354b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
355b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (int32_t)valueAtIndex:(NSUInteger)index;
356b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
357b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (void)enumerateValuesWithBlock:(void (^)(int32_t value, NSUInteger idx, BOOL *stop))block;
358b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (void)enumerateValuesWithOptions:(NSEnumerationOptions)opts
359b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer                        usingBlock:(void (^)(int32_t value, NSUInteger idx, BOOL *stop))block;
360b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
361b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer// These methods bypass the validationFunc to provide access to values that were not
362b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer// known at the time the binary was compiled.
363b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
364b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (int32_t)rawValueAtIndex:(NSUInteger)index;
365b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
366b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (void)enumerateRawValuesWithBlock:(void (^)(int32_t value, NSUInteger idx, BOOL *stop))block;
367b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (void)enumerateRawValuesWithOptions:(NSEnumerationOptions)opts
368b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer                           usingBlock:(void (^)(int32_t value, NSUInteger idx, BOOL *stop))block;
369b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
370b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer// If value is not a valid enumerator as defined by validationFunc, these
371b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer// methods will assert in debug, and will log in release and assign the value
372b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer// to the default value. Use the rawValue methods below to assign non enumerator
373b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer// values.
374b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
375b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (void)addValue:(int32_t)value;
376b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (void)addValues:(const int32_t [])values count:(NSUInteger)count;
377b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
378b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (void)insertValue:(int32_t)value atIndex:(NSUInteger)index;
379b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
380b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (void)replaceValueAtIndex:(NSUInteger)index withValue:(int32_t)value;
381b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
382b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer// These methods bypass the validationFunc to provide setting of values that were not
383b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer// known at the time the binary was compiled.
384b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
385b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (void)addRawValue:(int32_t)value;
386b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (void)addRawValuesFromArray:(GPBEnumArray *)array;
387b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (void)addRawValues:(const int32_t [])values count:(NSUInteger)count;
388b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
389b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (void)insertRawValue:(int32_t)value atIndex:(NSUInteger)index;
390b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
391b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (void)replaceValueAtIndex:(NSUInteger)index withRawValue:(int32_t)value;
392b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
393b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer// No validation applies to these methods.
394b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
395b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (void)removeValueAtIndex:(NSUInteger)index;
396b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (void)removeAll;
397b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
398b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer- (void)exchangeValueAtIndex:(NSUInteger)idx1
399b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer            withValueAtIndex:(NSUInteger)idx2;
400b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
401b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer@end
402b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
403b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%PDDM-EXPAND-END DECLARE_ARRAYS()
404b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
405b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas BerghammerNS_ASSUME_NONNULL_END
406b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
407b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%PDDM-DEFINE DECLARE_ARRAYS()
408b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%ARRAY_INTERFACE_SIMPLE(Int32, int32_t)
409b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%ARRAY_INTERFACE_SIMPLE(UInt32, uint32_t)
410b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%ARRAY_INTERFACE_SIMPLE(Int64, int64_t)
411b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%ARRAY_INTERFACE_SIMPLE(UInt64, uint64_t)
412b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%ARRAY_INTERFACE_SIMPLE(Float, float)
413b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%ARRAY_INTERFACE_SIMPLE(Double, double)
414b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%ARRAY_INTERFACE_SIMPLE(Bool, BOOL)
415b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%ARRAY_INTERFACE_ENUM(Enum, int32_t)
416b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
417b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//
418b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer// The common case (everything but Enum)
419b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//
420b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
421b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%PDDM-DEFINE ARRAY_INTERFACE_SIMPLE(NAME, TYPE)
422b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%#pragma mark - NAME
423b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%
424b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%@interface GPB##NAME##Array : NSObject <NSCopying>
425b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%
426b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%@property(nonatomic, readonly) NSUInteger count;
427b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%
428b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%+ (instancetype)array;
429b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%+ (instancetype)arrayWithValue:(TYPE)value;
430b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%+ (instancetype)arrayWithValueArray:(GPB##NAME##Array *)array;
431b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%+ (instancetype)arrayWithCapacity:(NSUInteger)count;
432b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%
433b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%- (instancetype)init NS_DESIGNATED_INITIALIZER;
434b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%// Initializes the array, copying the values.
435b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%- (instancetype)initWithValues:(const TYPE [])values
436b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%                         count:(NSUInteger)count;
437b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%- (instancetype)initWithValueArray:(GPB##NAME##Array *)array;
438b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%- (instancetype)initWithCapacity:(NSUInteger)count;
439b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%
440b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%ARRAY_IMMUTABLE_INTERFACE(NAME, TYPE, Basic)
441b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%
442b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%ARRAY_MUTABLE_INTERFACE(NAME, TYPE, Basic)
443b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%
444b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%@end
445b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%
446b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
447b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//
448b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer// Macros specific to Enums (to tweak their interface).
449b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//
450b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
451b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%PDDM-DEFINE ARRAY_INTERFACE_ENUM(NAME, TYPE)
452b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%#pragma mark - NAME
453b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%
454b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%@interface GPB##NAME##Array : NSObject <NSCopying>
455b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%
456b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%@property(nonatomic, readonly) NSUInteger count;
457b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%@property(nonatomic, readonly) GPBEnumValidationFunc validationFunc;
458b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%
459b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%+ (instancetype)array;
460b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%+ (instancetype)arrayWithValidationFunction:(nullable GPBEnumValidationFunc)func;
461b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%+ (instancetype)arrayWithValidationFunction:(nullable GPBEnumValidationFunc)func
462b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%                                   rawValue:(TYPE)value;
463b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%+ (instancetype)arrayWithValueArray:(GPB##NAME##Array *)array;
464b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%+ (instancetype)arrayWithValidationFunction:(nullable GPBEnumValidationFunc)func
465b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%                                   capacity:(NSUInteger)count;
466b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%
467b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%- (instancetype)initWithValidationFunction:(nullable GPBEnumValidationFunc)func
468b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%    NS_DESIGNATED_INITIALIZER;
469b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%
470b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%// Initializes the array, copying the values.
471b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%- (instancetype)initWithValidationFunction:(nullable GPBEnumValidationFunc)func
472b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%                                 rawValues:(const TYPE [])values
473b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%                                     count:(NSUInteger)count;
474b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%- (instancetype)initWithValueArray:(GPB##NAME##Array *)array;
475b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%- (instancetype)initWithValidationFunction:(nullable GPBEnumValidationFunc)func
476b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%                                  capacity:(NSUInteger)count;
477b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%
478b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%// These will return kGPBUnrecognizedEnumeratorValue if the value at index is not a
479b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%// valid enumerator as defined by validationFunc. If the actual value is
480b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%// desired, use "raw" version of the method.
481b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%
482b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%ARRAY_IMMUTABLE_INTERFACE(NAME, TYPE, NAME)
483b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%
484b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%// These methods bypass the validationFunc to provide access to values that were not
485b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%// known at the time the binary was compiled.
486b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%
487b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%- (TYPE)rawValueAtIndex:(NSUInteger)index;
488b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%
489b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%- (void)enumerateRawValuesWithBlock:(void (^)(TYPE value, NSUInteger idx, BOOL *stop))block;
490b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%- (void)enumerateRawValuesWithOptions:(NSEnumerationOptions)opts
491b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%                           usingBlock:(void (^)(TYPE value, NSUInteger idx, BOOL *stop))block;
492b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%
493b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%// If value is not a valid enumerator as defined by validationFunc, these
494b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%// methods will assert in debug, and will log in release and assign the value
495b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%// to the default value. Use the rawValue methods below to assign non enumerator
496b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%// values.
497b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%
498b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%ARRAY_MUTABLE_INTERFACE(NAME, TYPE, NAME)
499b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%
500b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%@end
501b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%
502b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
503b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%PDDM-DEFINE ARRAY_IMMUTABLE_INTERFACE(NAME, TYPE, HELPER_NAME)
504b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%- (TYPE)valueAtIndex:(NSUInteger)index;
505b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%
506b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%- (void)enumerateValuesWithBlock:(void (^)(TYPE value, NSUInteger idx, BOOL *stop))block;
507b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%- (void)enumerateValuesWithOptions:(NSEnumerationOptions)opts
508b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%                        usingBlock:(void (^)(TYPE value, NSUInteger idx, BOOL *stop))block;
509b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
510b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%PDDM-DEFINE ARRAY_MUTABLE_INTERFACE(NAME, TYPE, HELPER_NAME)
511b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%- (void)addValue:(TYPE)value;
512b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%- (void)addValues:(const TYPE [])values count:(NSUInteger)count;
513b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%ARRAY_EXTRA_MUTABLE_METHODS1_##HELPER_NAME(NAME, TYPE)
514b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%- (void)insertValue:(TYPE)value atIndex:(NSUInteger)index;
515b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%
516b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%- (void)replaceValueAtIndex:(NSUInteger)index withValue:(TYPE)value;
517b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%ARRAY_EXTRA_MUTABLE_METHODS2_##HELPER_NAME(NAME, TYPE)
518b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%- (void)removeValueAtIndex:(NSUInteger)index;
519b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%- (void)removeAll;
520b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%
521b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%- (void)exchangeValueAtIndex:(NSUInteger)idx1
522b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%            withValueAtIndex:(NSUInteger)idx2;
523b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
524b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//
525b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer// These are hooks invoked by the above to do insert as needed.
526b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//
527b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer
528b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%PDDM-DEFINE ARRAY_EXTRA_MUTABLE_METHODS1_Basic(NAME, TYPE)
529b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%- (void)addValuesFromArray:(GPB##NAME##Array *)array;
530b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%
531b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%PDDM-DEFINE ARRAY_EXTRA_MUTABLE_METHODS2_Basic(NAME, TYPE)
532b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer// Empty
533b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%PDDM-DEFINE ARRAY_EXTRA_MUTABLE_METHODS1_Enum(NAME, TYPE)
534b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer// Empty
535b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%PDDM-DEFINE ARRAY_EXTRA_MUTABLE_METHODS2_Enum(NAME, TYPE)
536b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%
537b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%// These methods bypass the validationFunc to provide setting of values that were not
538b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%// known at the time the binary was compiled.
539b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%
540b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%- (void)addRawValue:(TYPE)value;
541b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%- (void)addRawValuesFromArray:(GPB##NAME##Array *)array;
542b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%- (void)addRawValues:(const TYPE [])values count:(NSUInteger)count;
543b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%
544b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%- (void)insertRawValue:(TYPE)value atIndex:(NSUInteger)index;
545b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%
546b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%- (void)replaceValueAtIndex:(NSUInteger)index withRawValue:(TYPE)value;
547b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%
548b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%// No validation applies to these methods.
549b0575e93e4c39dec69365b850088a1eb7f82c5b3Tamas Berghammer//%
550