xref: /aosp_15_r20/external/protobuf/objectivec/GPBArray.h (revision 1b3f573f81763fcece89efc2b6a5209149e44ab8)
1*1b3f573fSAndroid Build Coastguard Worker // Protocol Buffers - Google's data interchange format
2*1b3f573fSAndroid Build Coastguard Worker // Copyright 2015 Google Inc.  All rights reserved.
3*1b3f573fSAndroid Build Coastguard Worker // https://developers.google.com/protocol-buffers/
4*1b3f573fSAndroid Build Coastguard Worker //
5*1b3f573fSAndroid Build Coastguard Worker // Redistribution and use in source and binary forms, with or without
6*1b3f573fSAndroid Build Coastguard Worker // modification, are permitted provided that the following conditions are
7*1b3f573fSAndroid Build Coastguard Worker // met:
8*1b3f573fSAndroid Build Coastguard Worker //
9*1b3f573fSAndroid Build Coastguard Worker //     * Redistributions of source code must retain the above copyright
10*1b3f573fSAndroid Build Coastguard Worker // notice, this list of conditions and the following disclaimer.
11*1b3f573fSAndroid Build Coastguard Worker //     * Redistributions in binary form must reproduce the above
12*1b3f573fSAndroid Build Coastguard Worker // copyright notice, this list of conditions and the following disclaimer
13*1b3f573fSAndroid Build Coastguard Worker // in the documentation and/or other materials provided with the
14*1b3f573fSAndroid Build Coastguard Worker // distribution.
15*1b3f573fSAndroid Build Coastguard Worker //     * Neither the name of Google Inc. nor the names of its
16*1b3f573fSAndroid Build Coastguard Worker // contributors may be used to endorse or promote products derived from
17*1b3f573fSAndroid Build Coastguard Worker // this software without specific prior written permission.
18*1b3f573fSAndroid Build Coastguard Worker //
19*1b3f573fSAndroid Build Coastguard Worker // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20*1b3f573fSAndroid Build Coastguard Worker // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21*1b3f573fSAndroid Build Coastguard Worker // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22*1b3f573fSAndroid Build Coastguard Worker // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
23*1b3f573fSAndroid Build Coastguard Worker // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24*1b3f573fSAndroid Build Coastguard Worker // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25*1b3f573fSAndroid Build Coastguard Worker // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26*1b3f573fSAndroid Build Coastguard Worker // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27*1b3f573fSAndroid Build Coastguard Worker // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28*1b3f573fSAndroid Build Coastguard Worker // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29*1b3f573fSAndroid Build Coastguard Worker // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30*1b3f573fSAndroid Build Coastguard Worker 
31*1b3f573fSAndroid Build Coastguard Worker #import <Foundation/Foundation.h>
32*1b3f573fSAndroid Build Coastguard Worker 
33*1b3f573fSAndroid Build Coastguard Worker #import "GPBRuntimeTypes.h"
34*1b3f573fSAndroid Build Coastguard Worker 
35*1b3f573fSAndroid Build Coastguard Worker NS_ASSUME_NONNULL_BEGIN
36*1b3f573fSAndroid Build Coastguard Worker 
37*1b3f573fSAndroid Build Coastguard Worker //%PDDM-EXPAND DECLARE_ARRAYS()
38*1b3f573fSAndroid Build Coastguard Worker // This block of code is generated, do not edit it directly.
39*1b3f573fSAndroid Build Coastguard Worker // clang-format off
40*1b3f573fSAndroid Build Coastguard Worker 
41*1b3f573fSAndroid Build Coastguard Worker #pragma mark - Int32
42*1b3f573fSAndroid Build Coastguard Worker 
43*1b3f573fSAndroid Build Coastguard Worker /**
44*1b3f573fSAndroid Build Coastguard Worker  * Class used for repeated fields of int32_t values. This performs better than
45*1b3f573fSAndroid Build Coastguard Worker  * boxing into NSNumbers in NSArrays.
46*1b3f573fSAndroid Build Coastguard Worker  *
47*1b3f573fSAndroid Build Coastguard Worker  * @note This class is not meant to be subclassed.
48*1b3f573fSAndroid Build Coastguard Worker  **/
49*1b3f573fSAndroid Build Coastguard Worker @interface GPBInt32Array : NSObject <NSCopying>
50*1b3f573fSAndroid Build Coastguard Worker 
51*1b3f573fSAndroid Build Coastguard Worker /** The number of elements contained in the array. */
52*1b3f573fSAndroid Build Coastguard Worker @property(nonatomic, readonly) NSUInteger count;
53*1b3f573fSAndroid Build Coastguard Worker 
54*1b3f573fSAndroid Build Coastguard Worker /**
55*1b3f573fSAndroid Build Coastguard Worker  * @return A newly instanced and empty GPBInt32Array.
56*1b3f573fSAndroid Build Coastguard Worker  **/
57*1b3f573fSAndroid Build Coastguard Worker + (instancetype)array;
58*1b3f573fSAndroid Build Coastguard Worker 
59*1b3f573fSAndroid Build Coastguard Worker /**
60*1b3f573fSAndroid Build Coastguard Worker  * Creates and initializes a GPBInt32Array with the single element given.
61*1b3f573fSAndroid Build Coastguard Worker  *
62*1b3f573fSAndroid Build Coastguard Worker  * @param value The value to be placed in the array.
63*1b3f573fSAndroid Build Coastguard Worker  *
64*1b3f573fSAndroid Build Coastguard Worker  * @return A newly instanced GPBInt32Array with value in it.
65*1b3f573fSAndroid Build Coastguard Worker  **/
66*1b3f573fSAndroid Build Coastguard Worker + (instancetype)arrayWithValue:(int32_t)value;
67*1b3f573fSAndroid Build Coastguard Worker 
68*1b3f573fSAndroid Build Coastguard Worker /**
69*1b3f573fSAndroid Build Coastguard Worker  * Creates and initializes a GPBInt32Array with the contents of the given
70*1b3f573fSAndroid Build Coastguard Worker  * array.
71*1b3f573fSAndroid Build Coastguard Worker  *
72*1b3f573fSAndroid Build Coastguard Worker  * @param array Array with the contents to be put into the new array.
73*1b3f573fSAndroid Build Coastguard Worker  *
74*1b3f573fSAndroid Build Coastguard Worker  * @return A newly instanced GPBInt32Array with the contents of array.
75*1b3f573fSAndroid Build Coastguard Worker  **/
76*1b3f573fSAndroid Build Coastguard Worker + (instancetype)arrayWithValueArray:(GPBInt32Array *)array;
77*1b3f573fSAndroid Build Coastguard Worker 
78*1b3f573fSAndroid Build Coastguard Worker /**
79*1b3f573fSAndroid Build Coastguard Worker  * Creates and initializes a GPBInt32Array with the given capacity.
80*1b3f573fSAndroid Build Coastguard Worker  *
81*1b3f573fSAndroid Build Coastguard Worker  * @param count The capacity needed for the array.
82*1b3f573fSAndroid Build Coastguard Worker  *
83*1b3f573fSAndroid Build Coastguard Worker  * @return A newly instanced GPBInt32Array with a capacity of count.
84*1b3f573fSAndroid Build Coastguard Worker  **/
85*1b3f573fSAndroid Build Coastguard Worker + (instancetype)arrayWithCapacity:(NSUInteger)count;
86*1b3f573fSAndroid Build Coastguard Worker 
87*1b3f573fSAndroid Build Coastguard Worker /**
88*1b3f573fSAndroid Build Coastguard Worker  * @return A newly initialized and empty GPBInt32Array.
89*1b3f573fSAndroid Build Coastguard Worker  **/
90*1b3f573fSAndroid Build Coastguard Worker - (instancetype)init NS_DESIGNATED_INITIALIZER;
91*1b3f573fSAndroid Build Coastguard Worker 
92*1b3f573fSAndroid Build Coastguard Worker /**
93*1b3f573fSAndroid Build Coastguard Worker  * Initializes the array, copying the given values.
94*1b3f573fSAndroid Build Coastguard Worker  *
95*1b3f573fSAndroid Build Coastguard Worker  * @param values An array with the values to put inside this array.
96*1b3f573fSAndroid Build Coastguard Worker  * @param count  The number of elements to copy into the array.
97*1b3f573fSAndroid Build Coastguard Worker  *
98*1b3f573fSAndroid Build Coastguard Worker  * @return A newly initialized GPBInt32Array with a copy of the values.
99*1b3f573fSAndroid Build Coastguard Worker  **/
100*1b3f573fSAndroid Build Coastguard Worker - (instancetype)initWithValues:(const int32_t [__nullable])values
101*1b3f573fSAndroid Build Coastguard Worker                          count:(NSUInteger)count;
102*1b3f573fSAndroid Build Coastguard Worker 
103*1b3f573fSAndroid Build Coastguard Worker /**
104*1b3f573fSAndroid Build Coastguard Worker  * Initializes the array, copying the given values.
105*1b3f573fSAndroid Build Coastguard Worker  *
106*1b3f573fSAndroid Build Coastguard Worker  * @param array An array with the values to put inside this array.
107*1b3f573fSAndroid Build Coastguard Worker  *
108*1b3f573fSAndroid Build Coastguard Worker  * @return A newly initialized GPBInt32Array with a copy of the values.
109*1b3f573fSAndroid Build Coastguard Worker  **/
110*1b3f573fSAndroid Build Coastguard Worker - (instancetype)initWithValueArray:(GPBInt32Array *)array;
111*1b3f573fSAndroid Build Coastguard Worker 
112*1b3f573fSAndroid Build Coastguard Worker /**
113*1b3f573fSAndroid Build Coastguard Worker  * Initializes the array with the given capacity.
114*1b3f573fSAndroid Build Coastguard Worker  *
115*1b3f573fSAndroid Build Coastguard Worker  * @param count The capacity needed for the array.
116*1b3f573fSAndroid Build Coastguard Worker  *
117*1b3f573fSAndroid Build Coastguard Worker  * @return A newly initialized GPBInt32Array with a capacity of count.
118*1b3f573fSAndroid Build Coastguard Worker  **/
119*1b3f573fSAndroid Build Coastguard Worker - (instancetype)initWithCapacity:(NSUInteger)count;
120*1b3f573fSAndroid Build Coastguard Worker 
121*1b3f573fSAndroid Build Coastguard Worker /**
122*1b3f573fSAndroid Build Coastguard Worker  * Gets the value at the given index.
123*1b3f573fSAndroid Build Coastguard Worker  *
124*1b3f573fSAndroid Build Coastguard Worker  * @param index The index of the value to get.
125*1b3f573fSAndroid Build Coastguard Worker  *
126*1b3f573fSAndroid Build Coastguard Worker  * @return The value at the given index.
127*1b3f573fSAndroid Build Coastguard Worker  **/
128*1b3f573fSAndroid Build Coastguard Worker - (int32_t)valueAtIndex:(NSUInteger)index;
129*1b3f573fSAndroid Build Coastguard Worker 
130*1b3f573fSAndroid Build Coastguard Worker /**
131*1b3f573fSAndroid Build Coastguard Worker  * Enumerates the values on this array with the given block.
132*1b3f573fSAndroid Build Coastguard Worker  *
133*1b3f573fSAndroid Build Coastguard Worker  * @param block The block to enumerate with.
134*1b3f573fSAndroid Build Coastguard Worker  *   **value**: The current value being enumerated.
135*1b3f573fSAndroid Build Coastguard Worker  *   **idx**:   The index of the current value.
136*1b3f573fSAndroid Build Coastguard Worker  *   **stop**:  A pointer to a boolean that when set stops the enumeration.
137*1b3f573fSAndroid Build Coastguard Worker  **/
138*1b3f573fSAndroid Build Coastguard Worker - (void)enumerateValuesWithBlock:(void (NS_NOESCAPE ^)(int32_t value, NSUInteger idx, BOOL *stop))block;
139*1b3f573fSAndroid Build Coastguard Worker 
140*1b3f573fSAndroid Build Coastguard Worker /**
141*1b3f573fSAndroid Build Coastguard Worker  * Enumerates the values on this array with the given block.
142*1b3f573fSAndroid Build Coastguard Worker  *
143*1b3f573fSAndroid Build Coastguard Worker  * @param opts  Options to control the enumeration.
144*1b3f573fSAndroid Build Coastguard Worker  * @param block The block to enumerate with.
145*1b3f573fSAndroid Build Coastguard Worker  *   **value**: The current value being enumerated.
146*1b3f573fSAndroid Build Coastguard Worker  *   **idx**:   The index of the current value.
147*1b3f573fSAndroid Build Coastguard Worker  *   **stop**:  A pointer to a boolean that when set stops the enumeration.
148*1b3f573fSAndroid Build Coastguard Worker  **/
149*1b3f573fSAndroid Build Coastguard Worker - (void)enumerateValuesWithOptions:(NSEnumerationOptions)opts
150*1b3f573fSAndroid Build Coastguard Worker                         usingBlock:(void (NS_NOESCAPE ^)(int32_t value, NSUInteger idx, BOOL *stop))block;
151*1b3f573fSAndroid Build Coastguard Worker 
152*1b3f573fSAndroid Build Coastguard Worker /**
153*1b3f573fSAndroid Build Coastguard Worker  * Adds a value to this array.
154*1b3f573fSAndroid Build Coastguard Worker  *
155*1b3f573fSAndroid Build Coastguard Worker  * @param value The value to add to this array.
156*1b3f573fSAndroid Build Coastguard Worker  **/
157*1b3f573fSAndroid Build Coastguard Worker - (void)addValue:(int32_t)value;
158*1b3f573fSAndroid Build Coastguard Worker 
159*1b3f573fSAndroid Build Coastguard Worker /**
160*1b3f573fSAndroid Build Coastguard Worker  * Adds values to this array.
161*1b3f573fSAndroid Build Coastguard Worker  *
162*1b3f573fSAndroid Build Coastguard Worker  * @param values The values to add to this array.
163*1b3f573fSAndroid Build Coastguard Worker  * @param count  The number of elements to add.
164*1b3f573fSAndroid Build Coastguard Worker  **/
165*1b3f573fSAndroid Build Coastguard Worker - (void)addValues:(const int32_t [__nullable])values count:(NSUInteger)count;
166*1b3f573fSAndroid Build Coastguard Worker 
167*1b3f573fSAndroid Build Coastguard Worker /**
168*1b3f573fSAndroid Build Coastguard Worker  * Adds the values from the given array to this array.
169*1b3f573fSAndroid Build Coastguard Worker  *
170*1b3f573fSAndroid Build Coastguard Worker  * @param array The array containing the elements to add to this array.
171*1b3f573fSAndroid Build Coastguard Worker  **/
172*1b3f573fSAndroid Build Coastguard Worker - (void)addValuesFromArray:(GPBInt32Array *)array;
173*1b3f573fSAndroid Build Coastguard Worker 
174*1b3f573fSAndroid Build Coastguard Worker /**
175*1b3f573fSAndroid Build Coastguard Worker  * Inserts a value into the given position.
176*1b3f573fSAndroid Build Coastguard Worker  *
177*1b3f573fSAndroid Build Coastguard Worker  * @param value The value to add to this array.
178*1b3f573fSAndroid Build Coastguard Worker  * @param index The index into which to insert the value.
179*1b3f573fSAndroid Build Coastguard Worker  **/
180*1b3f573fSAndroid Build Coastguard Worker - (void)insertValue:(int32_t)value atIndex:(NSUInteger)index;
181*1b3f573fSAndroid Build Coastguard Worker 
182*1b3f573fSAndroid Build Coastguard Worker /**
183*1b3f573fSAndroid Build Coastguard Worker  * Replaces the value at the given index with the given value.
184*1b3f573fSAndroid Build Coastguard Worker  *
185*1b3f573fSAndroid Build Coastguard Worker  * @param index The index for which to replace the value.
186*1b3f573fSAndroid Build Coastguard Worker  * @param value The value to replace with.
187*1b3f573fSAndroid Build Coastguard Worker  **/
188*1b3f573fSAndroid Build Coastguard Worker - (void)replaceValueAtIndex:(NSUInteger)index withValue:(int32_t)value;
189*1b3f573fSAndroid Build Coastguard Worker 
190*1b3f573fSAndroid Build Coastguard Worker /**
191*1b3f573fSAndroid Build Coastguard Worker  * Removes the value at the given index.
192*1b3f573fSAndroid Build Coastguard Worker  *
193*1b3f573fSAndroid Build Coastguard Worker  * @param index The index of the value to remove.
194*1b3f573fSAndroid Build Coastguard Worker  **/
195*1b3f573fSAndroid Build Coastguard Worker - (void)removeValueAtIndex:(NSUInteger)index;
196*1b3f573fSAndroid Build Coastguard Worker 
197*1b3f573fSAndroid Build Coastguard Worker /**
198*1b3f573fSAndroid Build Coastguard Worker  * Removes all the values from this array.
199*1b3f573fSAndroid Build Coastguard Worker  **/
200*1b3f573fSAndroid Build Coastguard Worker - (void)removeAll;
201*1b3f573fSAndroid Build Coastguard Worker 
202*1b3f573fSAndroid Build Coastguard Worker /**
203*1b3f573fSAndroid Build Coastguard Worker  * Exchanges the values between the given indexes.
204*1b3f573fSAndroid Build Coastguard Worker  *
205*1b3f573fSAndroid Build Coastguard Worker  * @param idx1 The index of the first element to exchange.
206*1b3f573fSAndroid Build Coastguard Worker  * @param idx2 The index of the second element to exchange.
207*1b3f573fSAndroid Build Coastguard Worker  **/
208*1b3f573fSAndroid Build Coastguard Worker - (void)exchangeValueAtIndex:(NSUInteger)idx1
209*1b3f573fSAndroid Build Coastguard Worker             withValueAtIndex:(NSUInteger)idx2;
210*1b3f573fSAndroid Build Coastguard Worker 
211*1b3f573fSAndroid Build Coastguard Worker @end
212*1b3f573fSAndroid Build Coastguard Worker 
213*1b3f573fSAndroid Build Coastguard Worker #pragma mark - UInt32
214*1b3f573fSAndroid Build Coastguard Worker 
215*1b3f573fSAndroid Build Coastguard Worker /**
216*1b3f573fSAndroid Build Coastguard Worker  * Class used for repeated fields of uint32_t values. This performs better than
217*1b3f573fSAndroid Build Coastguard Worker  * boxing into NSNumbers in NSArrays.
218*1b3f573fSAndroid Build Coastguard Worker  *
219*1b3f573fSAndroid Build Coastguard Worker  * @note This class is not meant to be subclassed.
220*1b3f573fSAndroid Build Coastguard Worker  **/
221*1b3f573fSAndroid Build Coastguard Worker @interface GPBUInt32Array : NSObject <NSCopying>
222*1b3f573fSAndroid Build Coastguard Worker 
223*1b3f573fSAndroid Build Coastguard Worker /** The number of elements contained in the array. */
224*1b3f573fSAndroid Build Coastguard Worker @property(nonatomic, readonly) NSUInteger count;
225*1b3f573fSAndroid Build Coastguard Worker 
226*1b3f573fSAndroid Build Coastguard Worker /**
227*1b3f573fSAndroid Build Coastguard Worker  * @return A newly instanced and empty GPBUInt32Array.
228*1b3f573fSAndroid Build Coastguard Worker  **/
229*1b3f573fSAndroid Build Coastguard Worker + (instancetype)array;
230*1b3f573fSAndroid Build Coastguard Worker 
231*1b3f573fSAndroid Build Coastguard Worker /**
232*1b3f573fSAndroid Build Coastguard Worker  * Creates and initializes a GPBUInt32Array with the single element given.
233*1b3f573fSAndroid Build Coastguard Worker  *
234*1b3f573fSAndroid Build Coastguard Worker  * @param value The value to be placed in the array.
235*1b3f573fSAndroid Build Coastguard Worker  *
236*1b3f573fSAndroid Build Coastguard Worker  * @return A newly instanced GPBUInt32Array with value in it.
237*1b3f573fSAndroid Build Coastguard Worker  **/
238*1b3f573fSAndroid Build Coastguard Worker + (instancetype)arrayWithValue:(uint32_t)value;
239*1b3f573fSAndroid Build Coastguard Worker 
240*1b3f573fSAndroid Build Coastguard Worker /**
241*1b3f573fSAndroid Build Coastguard Worker  * Creates and initializes a GPBUInt32Array with the contents of the given
242*1b3f573fSAndroid Build Coastguard Worker  * array.
243*1b3f573fSAndroid Build Coastguard Worker  *
244*1b3f573fSAndroid Build Coastguard Worker  * @param array Array with the contents to be put into the new array.
245*1b3f573fSAndroid Build Coastguard Worker  *
246*1b3f573fSAndroid Build Coastguard Worker  * @return A newly instanced GPBUInt32Array with the contents of array.
247*1b3f573fSAndroid Build Coastguard Worker  **/
248*1b3f573fSAndroid Build Coastguard Worker + (instancetype)arrayWithValueArray:(GPBUInt32Array *)array;
249*1b3f573fSAndroid Build Coastguard Worker 
250*1b3f573fSAndroid Build Coastguard Worker /**
251*1b3f573fSAndroid Build Coastguard Worker  * Creates and initializes a GPBUInt32Array with the given capacity.
252*1b3f573fSAndroid Build Coastguard Worker  *
253*1b3f573fSAndroid Build Coastguard Worker  * @param count The capacity needed for the array.
254*1b3f573fSAndroid Build Coastguard Worker  *
255*1b3f573fSAndroid Build Coastguard Worker  * @return A newly instanced GPBUInt32Array with a capacity of count.
256*1b3f573fSAndroid Build Coastguard Worker  **/
257*1b3f573fSAndroid Build Coastguard Worker + (instancetype)arrayWithCapacity:(NSUInteger)count;
258*1b3f573fSAndroid Build Coastguard Worker 
259*1b3f573fSAndroid Build Coastguard Worker /**
260*1b3f573fSAndroid Build Coastguard Worker  * @return A newly initialized and empty GPBUInt32Array.
261*1b3f573fSAndroid Build Coastguard Worker  **/
262*1b3f573fSAndroid Build Coastguard Worker - (instancetype)init NS_DESIGNATED_INITIALIZER;
263*1b3f573fSAndroid Build Coastguard Worker 
264*1b3f573fSAndroid Build Coastguard Worker /**
265*1b3f573fSAndroid Build Coastguard Worker  * Initializes the array, copying the given values.
266*1b3f573fSAndroid Build Coastguard Worker  *
267*1b3f573fSAndroid Build Coastguard Worker  * @param values An array with the values to put inside this array.
268*1b3f573fSAndroid Build Coastguard Worker  * @param count  The number of elements to copy into the array.
269*1b3f573fSAndroid Build Coastguard Worker  *
270*1b3f573fSAndroid Build Coastguard Worker  * @return A newly initialized GPBUInt32Array with a copy of the values.
271*1b3f573fSAndroid Build Coastguard Worker  **/
272*1b3f573fSAndroid Build Coastguard Worker - (instancetype)initWithValues:(const uint32_t [__nullable])values
273*1b3f573fSAndroid Build Coastguard Worker                          count:(NSUInteger)count;
274*1b3f573fSAndroid Build Coastguard Worker 
275*1b3f573fSAndroid Build Coastguard Worker /**
276*1b3f573fSAndroid Build Coastguard Worker  * Initializes the array, copying the given values.
277*1b3f573fSAndroid Build Coastguard Worker  *
278*1b3f573fSAndroid Build Coastguard Worker  * @param array An array with the values to put inside this array.
279*1b3f573fSAndroid Build Coastguard Worker  *
280*1b3f573fSAndroid Build Coastguard Worker  * @return A newly initialized GPBUInt32Array with a copy of the values.
281*1b3f573fSAndroid Build Coastguard Worker  **/
282*1b3f573fSAndroid Build Coastguard Worker - (instancetype)initWithValueArray:(GPBUInt32Array *)array;
283*1b3f573fSAndroid Build Coastguard Worker 
284*1b3f573fSAndroid Build Coastguard Worker /**
285*1b3f573fSAndroid Build Coastguard Worker  * Initializes the array with the given capacity.
286*1b3f573fSAndroid Build Coastguard Worker  *
287*1b3f573fSAndroid Build Coastguard Worker  * @param count The capacity needed for the array.
288*1b3f573fSAndroid Build Coastguard Worker  *
289*1b3f573fSAndroid Build Coastguard Worker  * @return A newly initialized GPBUInt32Array with a capacity of count.
290*1b3f573fSAndroid Build Coastguard Worker  **/
291*1b3f573fSAndroid Build Coastguard Worker - (instancetype)initWithCapacity:(NSUInteger)count;
292*1b3f573fSAndroid Build Coastguard Worker 
293*1b3f573fSAndroid Build Coastguard Worker /**
294*1b3f573fSAndroid Build Coastguard Worker  * Gets the value at the given index.
295*1b3f573fSAndroid Build Coastguard Worker  *
296*1b3f573fSAndroid Build Coastguard Worker  * @param index The index of the value to get.
297*1b3f573fSAndroid Build Coastguard Worker  *
298*1b3f573fSAndroid Build Coastguard Worker  * @return The value at the given index.
299*1b3f573fSAndroid Build Coastguard Worker  **/
300*1b3f573fSAndroid Build Coastguard Worker - (uint32_t)valueAtIndex:(NSUInteger)index;
301*1b3f573fSAndroid Build Coastguard Worker 
302*1b3f573fSAndroid Build Coastguard Worker /**
303*1b3f573fSAndroid Build Coastguard Worker  * Enumerates the values on this array with the given block.
304*1b3f573fSAndroid Build Coastguard Worker  *
305*1b3f573fSAndroid Build Coastguard Worker  * @param block The block to enumerate with.
306*1b3f573fSAndroid Build Coastguard Worker  *   **value**: The current value being enumerated.
307*1b3f573fSAndroid Build Coastguard Worker  *   **idx**:   The index of the current value.
308*1b3f573fSAndroid Build Coastguard Worker  *   **stop**:  A pointer to a boolean that when set stops the enumeration.
309*1b3f573fSAndroid Build Coastguard Worker  **/
310*1b3f573fSAndroid Build Coastguard Worker - (void)enumerateValuesWithBlock:(void (NS_NOESCAPE ^)(uint32_t value, NSUInteger idx, BOOL *stop))block;
311*1b3f573fSAndroid Build Coastguard Worker 
312*1b3f573fSAndroid Build Coastguard Worker /**
313*1b3f573fSAndroid Build Coastguard Worker  * Enumerates the values on this array with the given block.
314*1b3f573fSAndroid Build Coastguard Worker  *
315*1b3f573fSAndroid Build Coastguard Worker  * @param opts  Options to control the enumeration.
316*1b3f573fSAndroid Build Coastguard Worker  * @param block The block to enumerate with.
317*1b3f573fSAndroid Build Coastguard Worker  *   **value**: The current value being enumerated.
318*1b3f573fSAndroid Build Coastguard Worker  *   **idx**:   The index of the current value.
319*1b3f573fSAndroid Build Coastguard Worker  *   **stop**:  A pointer to a boolean that when set stops the enumeration.
320*1b3f573fSAndroid Build Coastguard Worker  **/
321*1b3f573fSAndroid Build Coastguard Worker - (void)enumerateValuesWithOptions:(NSEnumerationOptions)opts
322*1b3f573fSAndroid Build Coastguard Worker                         usingBlock:(void (NS_NOESCAPE ^)(uint32_t value, NSUInteger idx, BOOL *stop))block;
323*1b3f573fSAndroid Build Coastguard Worker 
324*1b3f573fSAndroid Build Coastguard Worker /**
325*1b3f573fSAndroid Build Coastguard Worker  * Adds a value to this array.
326*1b3f573fSAndroid Build Coastguard Worker  *
327*1b3f573fSAndroid Build Coastguard Worker  * @param value The value to add to this array.
328*1b3f573fSAndroid Build Coastguard Worker  **/
329*1b3f573fSAndroid Build Coastguard Worker - (void)addValue:(uint32_t)value;
330*1b3f573fSAndroid Build Coastguard Worker 
331*1b3f573fSAndroid Build Coastguard Worker /**
332*1b3f573fSAndroid Build Coastguard Worker  * Adds values to this array.
333*1b3f573fSAndroid Build Coastguard Worker  *
334*1b3f573fSAndroid Build Coastguard Worker  * @param values The values to add to this array.
335*1b3f573fSAndroid Build Coastguard Worker  * @param count  The number of elements to add.
336*1b3f573fSAndroid Build Coastguard Worker  **/
337*1b3f573fSAndroid Build Coastguard Worker - (void)addValues:(const uint32_t [__nullable])values count:(NSUInteger)count;
338*1b3f573fSAndroid Build Coastguard Worker 
339*1b3f573fSAndroid Build Coastguard Worker /**
340*1b3f573fSAndroid Build Coastguard Worker  * Adds the values from the given array to this array.
341*1b3f573fSAndroid Build Coastguard Worker  *
342*1b3f573fSAndroid Build Coastguard Worker  * @param array The array containing the elements to add to this array.
343*1b3f573fSAndroid Build Coastguard Worker  **/
344*1b3f573fSAndroid Build Coastguard Worker - (void)addValuesFromArray:(GPBUInt32Array *)array;
345*1b3f573fSAndroid Build Coastguard Worker 
346*1b3f573fSAndroid Build Coastguard Worker /**
347*1b3f573fSAndroid Build Coastguard Worker  * Inserts a value into the given position.
348*1b3f573fSAndroid Build Coastguard Worker  *
349*1b3f573fSAndroid Build Coastguard Worker  * @param value The value to add to this array.
350*1b3f573fSAndroid Build Coastguard Worker  * @param index The index into which to insert the value.
351*1b3f573fSAndroid Build Coastguard Worker  **/
352*1b3f573fSAndroid Build Coastguard Worker - (void)insertValue:(uint32_t)value atIndex:(NSUInteger)index;
353*1b3f573fSAndroid Build Coastguard Worker 
354*1b3f573fSAndroid Build Coastguard Worker /**
355*1b3f573fSAndroid Build Coastguard Worker  * Replaces the value at the given index with the given value.
356*1b3f573fSAndroid Build Coastguard Worker  *
357*1b3f573fSAndroid Build Coastguard Worker  * @param index The index for which to replace the value.
358*1b3f573fSAndroid Build Coastguard Worker  * @param value The value to replace with.
359*1b3f573fSAndroid Build Coastguard Worker  **/
360*1b3f573fSAndroid Build Coastguard Worker - (void)replaceValueAtIndex:(NSUInteger)index withValue:(uint32_t)value;
361*1b3f573fSAndroid Build Coastguard Worker 
362*1b3f573fSAndroid Build Coastguard Worker /**
363*1b3f573fSAndroid Build Coastguard Worker  * Removes the value at the given index.
364*1b3f573fSAndroid Build Coastguard Worker  *
365*1b3f573fSAndroid Build Coastguard Worker  * @param index The index of the value to remove.
366*1b3f573fSAndroid Build Coastguard Worker  **/
367*1b3f573fSAndroid Build Coastguard Worker - (void)removeValueAtIndex:(NSUInteger)index;
368*1b3f573fSAndroid Build Coastguard Worker 
369*1b3f573fSAndroid Build Coastguard Worker /**
370*1b3f573fSAndroid Build Coastguard Worker  * Removes all the values from this array.
371*1b3f573fSAndroid Build Coastguard Worker  **/
372*1b3f573fSAndroid Build Coastguard Worker - (void)removeAll;
373*1b3f573fSAndroid Build Coastguard Worker 
374*1b3f573fSAndroid Build Coastguard Worker /**
375*1b3f573fSAndroid Build Coastguard Worker  * Exchanges the values between the given indexes.
376*1b3f573fSAndroid Build Coastguard Worker  *
377*1b3f573fSAndroid Build Coastguard Worker  * @param idx1 The index of the first element to exchange.
378*1b3f573fSAndroid Build Coastguard Worker  * @param idx2 The index of the second element to exchange.
379*1b3f573fSAndroid Build Coastguard Worker  **/
380*1b3f573fSAndroid Build Coastguard Worker - (void)exchangeValueAtIndex:(NSUInteger)idx1
381*1b3f573fSAndroid Build Coastguard Worker             withValueAtIndex:(NSUInteger)idx2;
382*1b3f573fSAndroid Build Coastguard Worker 
383*1b3f573fSAndroid Build Coastguard Worker @end
384*1b3f573fSAndroid Build Coastguard Worker 
385*1b3f573fSAndroid Build Coastguard Worker #pragma mark - Int64
386*1b3f573fSAndroid Build Coastguard Worker 
387*1b3f573fSAndroid Build Coastguard Worker /**
388*1b3f573fSAndroid Build Coastguard Worker  * Class used for repeated fields of int64_t values. This performs better than
389*1b3f573fSAndroid Build Coastguard Worker  * boxing into NSNumbers in NSArrays.
390*1b3f573fSAndroid Build Coastguard Worker  *
391*1b3f573fSAndroid Build Coastguard Worker  * @note This class is not meant to be subclassed.
392*1b3f573fSAndroid Build Coastguard Worker  **/
393*1b3f573fSAndroid Build Coastguard Worker @interface GPBInt64Array : NSObject <NSCopying>
394*1b3f573fSAndroid Build Coastguard Worker 
395*1b3f573fSAndroid Build Coastguard Worker /** The number of elements contained in the array. */
396*1b3f573fSAndroid Build Coastguard Worker @property(nonatomic, readonly) NSUInteger count;
397*1b3f573fSAndroid Build Coastguard Worker 
398*1b3f573fSAndroid Build Coastguard Worker /**
399*1b3f573fSAndroid Build Coastguard Worker  * @return A newly instanced and empty GPBInt64Array.
400*1b3f573fSAndroid Build Coastguard Worker  **/
401*1b3f573fSAndroid Build Coastguard Worker + (instancetype)array;
402*1b3f573fSAndroid Build Coastguard Worker 
403*1b3f573fSAndroid Build Coastguard Worker /**
404*1b3f573fSAndroid Build Coastguard Worker  * Creates and initializes a GPBInt64Array with the single element given.
405*1b3f573fSAndroid Build Coastguard Worker  *
406*1b3f573fSAndroid Build Coastguard Worker  * @param value The value to be placed in the array.
407*1b3f573fSAndroid Build Coastguard Worker  *
408*1b3f573fSAndroid Build Coastguard Worker  * @return A newly instanced GPBInt64Array with value in it.
409*1b3f573fSAndroid Build Coastguard Worker  **/
410*1b3f573fSAndroid Build Coastguard Worker + (instancetype)arrayWithValue:(int64_t)value;
411*1b3f573fSAndroid Build Coastguard Worker 
412*1b3f573fSAndroid Build Coastguard Worker /**
413*1b3f573fSAndroid Build Coastguard Worker  * Creates and initializes a GPBInt64Array with the contents of the given
414*1b3f573fSAndroid Build Coastguard Worker  * array.
415*1b3f573fSAndroid Build Coastguard Worker  *
416*1b3f573fSAndroid Build Coastguard Worker  * @param array Array with the contents to be put into the new array.
417*1b3f573fSAndroid Build Coastguard Worker  *
418*1b3f573fSAndroid Build Coastguard Worker  * @return A newly instanced GPBInt64Array with the contents of array.
419*1b3f573fSAndroid Build Coastguard Worker  **/
420*1b3f573fSAndroid Build Coastguard Worker + (instancetype)arrayWithValueArray:(GPBInt64Array *)array;
421*1b3f573fSAndroid Build Coastguard Worker 
422*1b3f573fSAndroid Build Coastguard Worker /**
423*1b3f573fSAndroid Build Coastguard Worker  * Creates and initializes a GPBInt64Array with the given capacity.
424*1b3f573fSAndroid Build Coastguard Worker  *
425*1b3f573fSAndroid Build Coastguard Worker  * @param count The capacity needed for the array.
426*1b3f573fSAndroid Build Coastguard Worker  *
427*1b3f573fSAndroid Build Coastguard Worker  * @return A newly instanced GPBInt64Array with a capacity of count.
428*1b3f573fSAndroid Build Coastguard Worker  **/
429*1b3f573fSAndroid Build Coastguard Worker + (instancetype)arrayWithCapacity:(NSUInteger)count;
430*1b3f573fSAndroid Build Coastguard Worker 
431*1b3f573fSAndroid Build Coastguard Worker /**
432*1b3f573fSAndroid Build Coastguard Worker  * @return A newly initialized and empty GPBInt64Array.
433*1b3f573fSAndroid Build Coastguard Worker  **/
434*1b3f573fSAndroid Build Coastguard Worker - (instancetype)init NS_DESIGNATED_INITIALIZER;
435*1b3f573fSAndroid Build Coastguard Worker 
436*1b3f573fSAndroid Build Coastguard Worker /**
437*1b3f573fSAndroid Build Coastguard Worker  * Initializes the array, copying the given values.
438*1b3f573fSAndroid Build Coastguard Worker  *
439*1b3f573fSAndroid Build Coastguard Worker  * @param values An array with the values to put inside this array.
440*1b3f573fSAndroid Build Coastguard Worker  * @param count  The number of elements to copy into the array.
441*1b3f573fSAndroid Build Coastguard Worker  *
442*1b3f573fSAndroid Build Coastguard Worker  * @return A newly initialized GPBInt64Array with a copy of the values.
443*1b3f573fSAndroid Build Coastguard Worker  **/
444*1b3f573fSAndroid Build Coastguard Worker - (instancetype)initWithValues:(const int64_t [__nullable])values
445*1b3f573fSAndroid Build Coastguard Worker                          count:(NSUInteger)count;
446*1b3f573fSAndroid Build Coastguard Worker 
447*1b3f573fSAndroid Build Coastguard Worker /**
448*1b3f573fSAndroid Build Coastguard Worker  * Initializes the array, copying the given values.
449*1b3f573fSAndroid Build Coastguard Worker  *
450*1b3f573fSAndroid Build Coastguard Worker  * @param array An array with the values to put inside this array.
451*1b3f573fSAndroid Build Coastguard Worker  *
452*1b3f573fSAndroid Build Coastguard Worker  * @return A newly initialized GPBInt64Array with a copy of the values.
453*1b3f573fSAndroid Build Coastguard Worker  **/
454*1b3f573fSAndroid Build Coastguard Worker - (instancetype)initWithValueArray:(GPBInt64Array *)array;
455*1b3f573fSAndroid Build Coastguard Worker 
456*1b3f573fSAndroid Build Coastguard Worker /**
457*1b3f573fSAndroid Build Coastguard Worker  * Initializes the array with the given capacity.
458*1b3f573fSAndroid Build Coastguard Worker  *
459*1b3f573fSAndroid Build Coastguard Worker  * @param count The capacity needed for the array.
460*1b3f573fSAndroid Build Coastguard Worker  *
461*1b3f573fSAndroid Build Coastguard Worker  * @return A newly initialized GPBInt64Array with a capacity of count.
462*1b3f573fSAndroid Build Coastguard Worker  **/
463*1b3f573fSAndroid Build Coastguard Worker - (instancetype)initWithCapacity:(NSUInteger)count;
464*1b3f573fSAndroid Build Coastguard Worker 
465*1b3f573fSAndroid Build Coastguard Worker /**
466*1b3f573fSAndroid Build Coastguard Worker  * Gets the value at the given index.
467*1b3f573fSAndroid Build Coastguard Worker  *
468*1b3f573fSAndroid Build Coastguard Worker  * @param index The index of the value to get.
469*1b3f573fSAndroid Build Coastguard Worker  *
470*1b3f573fSAndroid Build Coastguard Worker  * @return The value at the given index.
471*1b3f573fSAndroid Build Coastguard Worker  **/
472*1b3f573fSAndroid Build Coastguard Worker - (int64_t)valueAtIndex:(NSUInteger)index;
473*1b3f573fSAndroid Build Coastguard Worker 
474*1b3f573fSAndroid Build Coastguard Worker /**
475*1b3f573fSAndroid Build Coastguard Worker  * Enumerates the values on this array with the given block.
476*1b3f573fSAndroid Build Coastguard Worker  *
477*1b3f573fSAndroid Build Coastguard Worker  * @param block The block to enumerate with.
478*1b3f573fSAndroid Build Coastguard Worker  *   **value**: The current value being enumerated.
479*1b3f573fSAndroid Build Coastguard Worker  *   **idx**:   The index of the current value.
480*1b3f573fSAndroid Build Coastguard Worker  *   **stop**:  A pointer to a boolean that when set stops the enumeration.
481*1b3f573fSAndroid Build Coastguard Worker  **/
482*1b3f573fSAndroid Build Coastguard Worker - (void)enumerateValuesWithBlock:(void (NS_NOESCAPE ^)(int64_t value, NSUInteger idx, BOOL *stop))block;
483*1b3f573fSAndroid Build Coastguard Worker 
484*1b3f573fSAndroid Build Coastguard Worker /**
485*1b3f573fSAndroid Build Coastguard Worker  * Enumerates the values on this array with the given block.
486*1b3f573fSAndroid Build Coastguard Worker  *
487*1b3f573fSAndroid Build Coastguard Worker  * @param opts  Options to control the enumeration.
488*1b3f573fSAndroid Build Coastguard Worker  * @param block The block to enumerate with.
489*1b3f573fSAndroid Build Coastguard Worker  *   **value**: The current value being enumerated.
490*1b3f573fSAndroid Build Coastguard Worker  *   **idx**:   The index of the current value.
491*1b3f573fSAndroid Build Coastguard Worker  *   **stop**:  A pointer to a boolean that when set stops the enumeration.
492*1b3f573fSAndroid Build Coastguard Worker  **/
493*1b3f573fSAndroid Build Coastguard Worker - (void)enumerateValuesWithOptions:(NSEnumerationOptions)opts
494*1b3f573fSAndroid Build Coastguard Worker                         usingBlock:(void (NS_NOESCAPE ^)(int64_t value, NSUInteger idx, BOOL *stop))block;
495*1b3f573fSAndroid Build Coastguard Worker 
496*1b3f573fSAndroid Build Coastguard Worker /**
497*1b3f573fSAndroid Build Coastguard Worker  * Adds a value to this array.
498*1b3f573fSAndroid Build Coastguard Worker  *
499*1b3f573fSAndroid Build Coastguard Worker  * @param value The value to add to this array.
500*1b3f573fSAndroid Build Coastguard Worker  **/
501*1b3f573fSAndroid Build Coastguard Worker - (void)addValue:(int64_t)value;
502*1b3f573fSAndroid Build Coastguard Worker 
503*1b3f573fSAndroid Build Coastguard Worker /**
504*1b3f573fSAndroid Build Coastguard Worker  * Adds values to this array.
505*1b3f573fSAndroid Build Coastguard Worker  *
506*1b3f573fSAndroid Build Coastguard Worker  * @param values The values to add to this array.
507*1b3f573fSAndroid Build Coastguard Worker  * @param count  The number of elements to add.
508*1b3f573fSAndroid Build Coastguard Worker  **/
509*1b3f573fSAndroid Build Coastguard Worker - (void)addValues:(const int64_t [__nullable])values count:(NSUInteger)count;
510*1b3f573fSAndroid Build Coastguard Worker 
511*1b3f573fSAndroid Build Coastguard Worker /**
512*1b3f573fSAndroid Build Coastguard Worker  * Adds the values from the given array to this array.
513*1b3f573fSAndroid Build Coastguard Worker  *
514*1b3f573fSAndroid Build Coastguard Worker  * @param array The array containing the elements to add to this array.
515*1b3f573fSAndroid Build Coastguard Worker  **/
516*1b3f573fSAndroid Build Coastguard Worker - (void)addValuesFromArray:(GPBInt64Array *)array;
517*1b3f573fSAndroid Build Coastguard Worker 
518*1b3f573fSAndroid Build Coastguard Worker /**
519*1b3f573fSAndroid Build Coastguard Worker  * Inserts a value into the given position.
520*1b3f573fSAndroid Build Coastguard Worker  *
521*1b3f573fSAndroid Build Coastguard Worker  * @param value The value to add to this array.
522*1b3f573fSAndroid Build Coastguard Worker  * @param index The index into which to insert the value.
523*1b3f573fSAndroid Build Coastguard Worker  **/
524*1b3f573fSAndroid Build Coastguard Worker - (void)insertValue:(int64_t)value atIndex:(NSUInteger)index;
525*1b3f573fSAndroid Build Coastguard Worker 
526*1b3f573fSAndroid Build Coastguard Worker /**
527*1b3f573fSAndroid Build Coastguard Worker  * Replaces the value at the given index with the given value.
528*1b3f573fSAndroid Build Coastguard Worker  *
529*1b3f573fSAndroid Build Coastguard Worker  * @param index The index for which to replace the value.
530*1b3f573fSAndroid Build Coastguard Worker  * @param value The value to replace with.
531*1b3f573fSAndroid Build Coastguard Worker  **/
532*1b3f573fSAndroid Build Coastguard Worker - (void)replaceValueAtIndex:(NSUInteger)index withValue:(int64_t)value;
533*1b3f573fSAndroid Build Coastguard Worker 
534*1b3f573fSAndroid Build Coastguard Worker /**
535*1b3f573fSAndroid Build Coastguard Worker  * Removes the value at the given index.
536*1b3f573fSAndroid Build Coastguard Worker  *
537*1b3f573fSAndroid Build Coastguard Worker  * @param index The index of the value to remove.
538*1b3f573fSAndroid Build Coastguard Worker  **/
539*1b3f573fSAndroid Build Coastguard Worker - (void)removeValueAtIndex:(NSUInteger)index;
540*1b3f573fSAndroid Build Coastguard Worker 
541*1b3f573fSAndroid Build Coastguard Worker /**
542*1b3f573fSAndroid Build Coastguard Worker  * Removes all the values from this array.
543*1b3f573fSAndroid Build Coastguard Worker  **/
544*1b3f573fSAndroid Build Coastguard Worker - (void)removeAll;
545*1b3f573fSAndroid Build Coastguard Worker 
546*1b3f573fSAndroid Build Coastguard Worker /**
547*1b3f573fSAndroid Build Coastguard Worker  * Exchanges the values between the given indexes.
548*1b3f573fSAndroid Build Coastguard Worker  *
549*1b3f573fSAndroid Build Coastguard Worker  * @param idx1 The index of the first element to exchange.
550*1b3f573fSAndroid Build Coastguard Worker  * @param idx2 The index of the second element to exchange.
551*1b3f573fSAndroid Build Coastguard Worker  **/
552*1b3f573fSAndroid Build Coastguard Worker - (void)exchangeValueAtIndex:(NSUInteger)idx1
553*1b3f573fSAndroid Build Coastguard Worker             withValueAtIndex:(NSUInteger)idx2;
554*1b3f573fSAndroid Build Coastguard Worker 
555*1b3f573fSAndroid Build Coastguard Worker @end
556*1b3f573fSAndroid Build Coastguard Worker 
557*1b3f573fSAndroid Build Coastguard Worker #pragma mark - UInt64
558*1b3f573fSAndroid Build Coastguard Worker 
559*1b3f573fSAndroid Build Coastguard Worker /**
560*1b3f573fSAndroid Build Coastguard Worker  * Class used for repeated fields of uint64_t values. This performs better than
561*1b3f573fSAndroid Build Coastguard Worker  * boxing into NSNumbers in NSArrays.
562*1b3f573fSAndroid Build Coastguard Worker  *
563*1b3f573fSAndroid Build Coastguard Worker  * @note This class is not meant to be subclassed.
564*1b3f573fSAndroid Build Coastguard Worker  **/
565*1b3f573fSAndroid Build Coastguard Worker @interface GPBUInt64Array : NSObject <NSCopying>
566*1b3f573fSAndroid Build Coastguard Worker 
567*1b3f573fSAndroid Build Coastguard Worker /** The number of elements contained in the array. */
568*1b3f573fSAndroid Build Coastguard Worker @property(nonatomic, readonly) NSUInteger count;
569*1b3f573fSAndroid Build Coastguard Worker 
570*1b3f573fSAndroid Build Coastguard Worker /**
571*1b3f573fSAndroid Build Coastguard Worker  * @return A newly instanced and empty GPBUInt64Array.
572*1b3f573fSAndroid Build Coastguard Worker  **/
573*1b3f573fSAndroid Build Coastguard Worker + (instancetype)array;
574*1b3f573fSAndroid Build Coastguard Worker 
575*1b3f573fSAndroid Build Coastguard Worker /**
576*1b3f573fSAndroid Build Coastguard Worker  * Creates and initializes a GPBUInt64Array with the single element given.
577*1b3f573fSAndroid Build Coastguard Worker  *
578*1b3f573fSAndroid Build Coastguard Worker  * @param value The value to be placed in the array.
579*1b3f573fSAndroid Build Coastguard Worker  *
580*1b3f573fSAndroid Build Coastguard Worker  * @return A newly instanced GPBUInt64Array with value in it.
581*1b3f573fSAndroid Build Coastguard Worker  **/
582*1b3f573fSAndroid Build Coastguard Worker + (instancetype)arrayWithValue:(uint64_t)value;
583*1b3f573fSAndroid Build Coastguard Worker 
584*1b3f573fSAndroid Build Coastguard Worker /**
585*1b3f573fSAndroid Build Coastguard Worker  * Creates and initializes a GPBUInt64Array with the contents of the given
586*1b3f573fSAndroid Build Coastguard Worker  * array.
587*1b3f573fSAndroid Build Coastguard Worker  *
588*1b3f573fSAndroid Build Coastguard Worker  * @param array Array with the contents to be put into the new array.
589*1b3f573fSAndroid Build Coastguard Worker  *
590*1b3f573fSAndroid Build Coastguard Worker  * @return A newly instanced GPBUInt64Array with the contents of array.
591*1b3f573fSAndroid Build Coastguard Worker  **/
592*1b3f573fSAndroid Build Coastguard Worker + (instancetype)arrayWithValueArray:(GPBUInt64Array *)array;
593*1b3f573fSAndroid Build Coastguard Worker 
594*1b3f573fSAndroid Build Coastguard Worker /**
595*1b3f573fSAndroid Build Coastguard Worker  * Creates and initializes a GPBUInt64Array with the given capacity.
596*1b3f573fSAndroid Build Coastguard Worker  *
597*1b3f573fSAndroid Build Coastguard Worker  * @param count The capacity needed for the array.
598*1b3f573fSAndroid Build Coastguard Worker  *
599*1b3f573fSAndroid Build Coastguard Worker  * @return A newly instanced GPBUInt64Array with a capacity of count.
600*1b3f573fSAndroid Build Coastguard Worker  **/
601*1b3f573fSAndroid Build Coastguard Worker + (instancetype)arrayWithCapacity:(NSUInteger)count;
602*1b3f573fSAndroid Build Coastguard Worker 
603*1b3f573fSAndroid Build Coastguard Worker /**
604*1b3f573fSAndroid Build Coastguard Worker  * @return A newly initialized and empty GPBUInt64Array.
605*1b3f573fSAndroid Build Coastguard Worker  **/
606*1b3f573fSAndroid Build Coastguard Worker - (instancetype)init NS_DESIGNATED_INITIALIZER;
607*1b3f573fSAndroid Build Coastguard Worker 
608*1b3f573fSAndroid Build Coastguard Worker /**
609*1b3f573fSAndroid Build Coastguard Worker  * Initializes the array, copying the given values.
610*1b3f573fSAndroid Build Coastguard Worker  *
611*1b3f573fSAndroid Build Coastguard Worker  * @param values An array with the values to put inside this array.
612*1b3f573fSAndroid Build Coastguard Worker  * @param count  The number of elements to copy into the array.
613*1b3f573fSAndroid Build Coastguard Worker  *
614*1b3f573fSAndroid Build Coastguard Worker  * @return A newly initialized GPBUInt64Array with a copy of the values.
615*1b3f573fSAndroid Build Coastguard Worker  **/
616*1b3f573fSAndroid Build Coastguard Worker - (instancetype)initWithValues:(const uint64_t [__nullable])values
617*1b3f573fSAndroid Build Coastguard Worker                          count:(NSUInteger)count;
618*1b3f573fSAndroid Build Coastguard Worker 
619*1b3f573fSAndroid Build Coastguard Worker /**
620*1b3f573fSAndroid Build Coastguard Worker  * Initializes the array, copying the given values.
621*1b3f573fSAndroid Build Coastguard Worker  *
622*1b3f573fSAndroid Build Coastguard Worker  * @param array An array with the values to put inside this array.
623*1b3f573fSAndroid Build Coastguard Worker  *
624*1b3f573fSAndroid Build Coastguard Worker  * @return A newly initialized GPBUInt64Array with a copy of the values.
625*1b3f573fSAndroid Build Coastguard Worker  **/
626*1b3f573fSAndroid Build Coastguard Worker - (instancetype)initWithValueArray:(GPBUInt64Array *)array;
627*1b3f573fSAndroid Build Coastguard Worker 
628*1b3f573fSAndroid Build Coastguard Worker /**
629*1b3f573fSAndroid Build Coastguard Worker  * Initializes the array with the given capacity.
630*1b3f573fSAndroid Build Coastguard Worker  *
631*1b3f573fSAndroid Build Coastguard Worker  * @param count The capacity needed for the array.
632*1b3f573fSAndroid Build Coastguard Worker  *
633*1b3f573fSAndroid Build Coastguard Worker  * @return A newly initialized GPBUInt64Array with a capacity of count.
634*1b3f573fSAndroid Build Coastguard Worker  **/
635*1b3f573fSAndroid Build Coastguard Worker - (instancetype)initWithCapacity:(NSUInteger)count;
636*1b3f573fSAndroid Build Coastguard Worker 
637*1b3f573fSAndroid Build Coastguard Worker /**
638*1b3f573fSAndroid Build Coastguard Worker  * Gets the value at the given index.
639*1b3f573fSAndroid Build Coastguard Worker  *
640*1b3f573fSAndroid Build Coastguard Worker  * @param index The index of the value to get.
641*1b3f573fSAndroid Build Coastguard Worker  *
642*1b3f573fSAndroid Build Coastguard Worker  * @return The value at the given index.
643*1b3f573fSAndroid Build Coastguard Worker  **/
644*1b3f573fSAndroid Build Coastguard Worker - (uint64_t)valueAtIndex:(NSUInteger)index;
645*1b3f573fSAndroid Build Coastguard Worker 
646*1b3f573fSAndroid Build Coastguard Worker /**
647*1b3f573fSAndroid Build Coastguard Worker  * Enumerates the values on this array with the given block.
648*1b3f573fSAndroid Build Coastguard Worker  *
649*1b3f573fSAndroid Build Coastguard Worker  * @param block The block to enumerate with.
650*1b3f573fSAndroid Build Coastguard Worker  *   **value**: The current value being enumerated.
651*1b3f573fSAndroid Build Coastguard Worker  *   **idx**:   The index of the current value.
652*1b3f573fSAndroid Build Coastguard Worker  *   **stop**:  A pointer to a boolean that when set stops the enumeration.
653*1b3f573fSAndroid Build Coastguard Worker  **/
654*1b3f573fSAndroid Build Coastguard Worker - (void)enumerateValuesWithBlock:(void (NS_NOESCAPE ^)(uint64_t value, NSUInteger idx, BOOL *stop))block;
655*1b3f573fSAndroid Build Coastguard Worker 
656*1b3f573fSAndroid Build Coastguard Worker /**
657*1b3f573fSAndroid Build Coastguard Worker  * Enumerates the values on this array with the given block.
658*1b3f573fSAndroid Build Coastguard Worker  *
659*1b3f573fSAndroid Build Coastguard Worker  * @param opts  Options to control the enumeration.
660*1b3f573fSAndroid Build Coastguard Worker  * @param block The block to enumerate with.
661*1b3f573fSAndroid Build Coastguard Worker  *   **value**: The current value being enumerated.
662*1b3f573fSAndroid Build Coastguard Worker  *   **idx**:   The index of the current value.
663*1b3f573fSAndroid Build Coastguard Worker  *   **stop**:  A pointer to a boolean that when set stops the enumeration.
664*1b3f573fSAndroid Build Coastguard Worker  **/
665*1b3f573fSAndroid Build Coastguard Worker - (void)enumerateValuesWithOptions:(NSEnumerationOptions)opts
666*1b3f573fSAndroid Build Coastguard Worker                         usingBlock:(void (NS_NOESCAPE ^)(uint64_t value, NSUInteger idx, BOOL *stop))block;
667*1b3f573fSAndroid Build Coastguard Worker 
668*1b3f573fSAndroid Build Coastguard Worker /**
669*1b3f573fSAndroid Build Coastguard Worker  * Adds a value to this array.
670*1b3f573fSAndroid Build Coastguard Worker  *
671*1b3f573fSAndroid Build Coastguard Worker  * @param value The value to add to this array.
672*1b3f573fSAndroid Build Coastguard Worker  **/
673*1b3f573fSAndroid Build Coastguard Worker - (void)addValue:(uint64_t)value;
674*1b3f573fSAndroid Build Coastguard Worker 
675*1b3f573fSAndroid Build Coastguard Worker /**
676*1b3f573fSAndroid Build Coastguard Worker  * Adds values to this array.
677*1b3f573fSAndroid Build Coastguard Worker  *
678*1b3f573fSAndroid Build Coastguard Worker  * @param values The values to add to this array.
679*1b3f573fSAndroid Build Coastguard Worker  * @param count  The number of elements to add.
680*1b3f573fSAndroid Build Coastguard Worker  **/
681*1b3f573fSAndroid Build Coastguard Worker - (void)addValues:(const uint64_t [__nullable])values count:(NSUInteger)count;
682*1b3f573fSAndroid Build Coastguard Worker 
683*1b3f573fSAndroid Build Coastguard Worker /**
684*1b3f573fSAndroid Build Coastguard Worker  * Adds the values from the given array to this array.
685*1b3f573fSAndroid Build Coastguard Worker  *
686*1b3f573fSAndroid Build Coastguard Worker  * @param array The array containing the elements to add to this array.
687*1b3f573fSAndroid Build Coastguard Worker  **/
688*1b3f573fSAndroid Build Coastguard Worker - (void)addValuesFromArray:(GPBUInt64Array *)array;
689*1b3f573fSAndroid Build Coastguard Worker 
690*1b3f573fSAndroid Build Coastguard Worker /**
691*1b3f573fSAndroid Build Coastguard Worker  * Inserts a value into the given position.
692*1b3f573fSAndroid Build Coastguard Worker  *
693*1b3f573fSAndroid Build Coastguard Worker  * @param value The value to add to this array.
694*1b3f573fSAndroid Build Coastguard Worker  * @param index The index into which to insert the value.
695*1b3f573fSAndroid Build Coastguard Worker  **/
696*1b3f573fSAndroid Build Coastguard Worker - (void)insertValue:(uint64_t)value atIndex:(NSUInteger)index;
697*1b3f573fSAndroid Build Coastguard Worker 
698*1b3f573fSAndroid Build Coastguard Worker /**
699*1b3f573fSAndroid Build Coastguard Worker  * Replaces the value at the given index with the given value.
700*1b3f573fSAndroid Build Coastguard Worker  *
701*1b3f573fSAndroid Build Coastguard Worker  * @param index The index for which to replace the value.
702*1b3f573fSAndroid Build Coastguard Worker  * @param value The value to replace with.
703*1b3f573fSAndroid Build Coastguard Worker  **/
704*1b3f573fSAndroid Build Coastguard Worker - (void)replaceValueAtIndex:(NSUInteger)index withValue:(uint64_t)value;
705*1b3f573fSAndroid Build Coastguard Worker 
706*1b3f573fSAndroid Build Coastguard Worker /**
707*1b3f573fSAndroid Build Coastguard Worker  * Removes the value at the given index.
708*1b3f573fSAndroid Build Coastguard Worker  *
709*1b3f573fSAndroid Build Coastguard Worker  * @param index The index of the value to remove.
710*1b3f573fSAndroid Build Coastguard Worker  **/
711*1b3f573fSAndroid Build Coastguard Worker - (void)removeValueAtIndex:(NSUInteger)index;
712*1b3f573fSAndroid Build Coastguard Worker 
713*1b3f573fSAndroid Build Coastguard Worker /**
714*1b3f573fSAndroid Build Coastguard Worker  * Removes all the values from this array.
715*1b3f573fSAndroid Build Coastguard Worker  **/
716*1b3f573fSAndroid Build Coastguard Worker - (void)removeAll;
717*1b3f573fSAndroid Build Coastguard Worker 
718*1b3f573fSAndroid Build Coastguard Worker /**
719*1b3f573fSAndroid Build Coastguard Worker  * Exchanges the values between the given indexes.
720*1b3f573fSAndroid Build Coastguard Worker  *
721*1b3f573fSAndroid Build Coastguard Worker  * @param idx1 The index of the first element to exchange.
722*1b3f573fSAndroid Build Coastguard Worker  * @param idx2 The index of the second element to exchange.
723*1b3f573fSAndroid Build Coastguard Worker  **/
724*1b3f573fSAndroid Build Coastguard Worker - (void)exchangeValueAtIndex:(NSUInteger)idx1
725*1b3f573fSAndroid Build Coastguard Worker             withValueAtIndex:(NSUInteger)idx2;
726*1b3f573fSAndroid Build Coastguard Worker 
727*1b3f573fSAndroid Build Coastguard Worker @end
728*1b3f573fSAndroid Build Coastguard Worker 
729*1b3f573fSAndroid Build Coastguard Worker #pragma mark - Float
730*1b3f573fSAndroid Build Coastguard Worker 
731*1b3f573fSAndroid Build Coastguard Worker /**
732*1b3f573fSAndroid Build Coastguard Worker  * Class used for repeated fields of float values. This performs better than
733*1b3f573fSAndroid Build Coastguard Worker  * boxing into NSNumbers in NSArrays.
734*1b3f573fSAndroid Build Coastguard Worker  *
735*1b3f573fSAndroid Build Coastguard Worker  * @note This class is not meant to be subclassed.
736*1b3f573fSAndroid Build Coastguard Worker  **/
737*1b3f573fSAndroid Build Coastguard Worker @interface GPBFloatArray : NSObject <NSCopying>
738*1b3f573fSAndroid Build Coastguard Worker 
739*1b3f573fSAndroid Build Coastguard Worker /** The number of elements contained in the array. */
740*1b3f573fSAndroid Build Coastguard Worker @property(nonatomic, readonly) NSUInteger count;
741*1b3f573fSAndroid Build Coastguard Worker 
742*1b3f573fSAndroid Build Coastguard Worker /**
743*1b3f573fSAndroid Build Coastguard Worker  * @return A newly instanced and empty GPBFloatArray.
744*1b3f573fSAndroid Build Coastguard Worker  **/
745*1b3f573fSAndroid Build Coastguard Worker + (instancetype)array;
746*1b3f573fSAndroid Build Coastguard Worker 
747*1b3f573fSAndroid Build Coastguard Worker /**
748*1b3f573fSAndroid Build Coastguard Worker  * Creates and initializes a GPBFloatArray with the single element given.
749*1b3f573fSAndroid Build Coastguard Worker  *
750*1b3f573fSAndroid Build Coastguard Worker  * @param value The value to be placed in the array.
751*1b3f573fSAndroid Build Coastguard Worker  *
752*1b3f573fSAndroid Build Coastguard Worker  * @return A newly instanced GPBFloatArray with value in it.
753*1b3f573fSAndroid Build Coastguard Worker  **/
754*1b3f573fSAndroid Build Coastguard Worker + (instancetype)arrayWithValue:(float)value;
755*1b3f573fSAndroid Build Coastguard Worker 
756*1b3f573fSAndroid Build Coastguard Worker /**
757*1b3f573fSAndroid Build Coastguard Worker  * Creates and initializes a GPBFloatArray with the contents of the given
758*1b3f573fSAndroid Build Coastguard Worker  * array.
759*1b3f573fSAndroid Build Coastguard Worker  *
760*1b3f573fSAndroid Build Coastguard Worker  * @param array Array with the contents to be put into the new array.
761*1b3f573fSAndroid Build Coastguard Worker  *
762*1b3f573fSAndroid Build Coastguard Worker  * @return A newly instanced GPBFloatArray with the contents of array.
763*1b3f573fSAndroid Build Coastguard Worker  **/
764*1b3f573fSAndroid Build Coastguard Worker + (instancetype)arrayWithValueArray:(GPBFloatArray *)array;
765*1b3f573fSAndroid Build Coastguard Worker 
766*1b3f573fSAndroid Build Coastguard Worker /**
767*1b3f573fSAndroid Build Coastguard Worker  * Creates and initializes a GPBFloatArray with the given capacity.
768*1b3f573fSAndroid Build Coastguard Worker  *
769*1b3f573fSAndroid Build Coastguard Worker  * @param count The capacity needed for the array.
770*1b3f573fSAndroid Build Coastguard Worker  *
771*1b3f573fSAndroid Build Coastguard Worker  * @return A newly instanced GPBFloatArray with a capacity of count.
772*1b3f573fSAndroid Build Coastguard Worker  **/
773*1b3f573fSAndroid Build Coastguard Worker + (instancetype)arrayWithCapacity:(NSUInteger)count;
774*1b3f573fSAndroid Build Coastguard Worker 
775*1b3f573fSAndroid Build Coastguard Worker /**
776*1b3f573fSAndroid Build Coastguard Worker  * @return A newly initialized and empty GPBFloatArray.
777*1b3f573fSAndroid Build Coastguard Worker  **/
778*1b3f573fSAndroid Build Coastguard Worker - (instancetype)init NS_DESIGNATED_INITIALIZER;
779*1b3f573fSAndroid Build Coastguard Worker 
780*1b3f573fSAndroid Build Coastguard Worker /**
781*1b3f573fSAndroid Build Coastguard Worker  * Initializes the array, copying the given values.
782*1b3f573fSAndroid Build Coastguard Worker  *
783*1b3f573fSAndroid Build Coastguard Worker  * @param values An array with the values to put inside this array.
784*1b3f573fSAndroid Build Coastguard Worker  * @param count  The number of elements to copy into the array.
785*1b3f573fSAndroid Build Coastguard Worker  *
786*1b3f573fSAndroid Build Coastguard Worker  * @return A newly initialized GPBFloatArray with a copy of the values.
787*1b3f573fSAndroid Build Coastguard Worker  **/
788*1b3f573fSAndroid Build Coastguard Worker - (instancetype)initWithValues:(const float [__nullable])values
789*1b3f573fSAndroid Build Coastguard Worker                          count:(NSUInteger)count;
790*1b3f573fSAndroid Build Coastguard Worker 
791*1b3f573fSAndroid Build Coastguard Worker /**
792*1b3f573fSAndroid Build Coastguard Worker  * Initializes the array, copying the given values.
793*1b3f573fSAndroid Build Coastguard Worker  *
794*1b3f573fSAndroid Build Coastguard Worker  * @param array An array with the values to put inside this array.
795*1b3f573fSAndroid Build Coastguard Worker  *
796*1b3f573fSAndroid Build Coastguard Worker  * @return A newly initialized GPBFloatArray with a copy of the values.
797*1b3f573fSAndroid Build Coastguard Worker  **/
798*1b3f573fSAndroid Build Coastguard Worker - (instancetype)initWithValueArray:(GPBFloatArray *)array;
799*1b3f573fSAndroid Build Coastguard Worker 
800*1b3f573fSAndroid Build Coastguard Worker /**
801*1b3f573fSAndroid Build Coastguard Worker  * Initializes the array with the given capacity.
802*1b3f573fSAndroid Build Coastguard Worker  *
803*1b3f573fSAndroid Build Coastguard Worker  * @param count The capacity needed for the array.
804*1b3f573fSAndroid Build Coastguard Worker  *
805*1b3f573fSAndroid Build Coastguard Worker  * @return A newly initialized GPBFloatArray with a capacity of count.
806*1b3f573fSAndroid Build Coastguard Worker  **/
807*1b3f573fSAndroid Build Coastguard Worker - (instancetype)initWithCapacity:(NSUInteger)count;
808*1b3f573fSAndroid Build Coastguard Worker 
809*1b3f573fSAndroid Build Coastguard Worker /**
810*1b3f573fSAndroid Build Coastguard Worker  * Gets the value at the given index.
811*1b3f573fSAndroid Build Coastguard Worker  *
812*1b3f573fSAndroid Build Coastguard Worker  * @param index The index of the value to get.
813*1b3f573fSAndroid Build Coastguard Worker  *
814*1b3f573fSAndroid Build Coastguard Worker  * @return The value at the given index.
815*1b3f573fSAndroid Build Coastguard Worker  **/
816*1b3f573fSAndroid Build Coastguard Worker - (float)valueAtIndex:(NSUInteger)index;
817*1b3f573fSAndroid Build Coastguard Worker 
818*1b3f573fSAndroid Build Coastguard Worker /**
819*1b3f573fSAndroid Build Coastguard Worker  * Enumerates the values on this array with the given block.
820*1b3f573fSAndroid Build Coastguard Worker  *
821*1b3f573fSAndroid Build Coastguard Worker  * @param block The block to enumerate with.
822*1b3f573fSAndroid Build Coastguard Worker  *   **value**: The current value being enumerated.
823*1b3f573fSAndroid Build Coastguard Worker  *   **idx**:   The index of the current value.
824*1b3f573fSAndroid Build Coastguard Worker  *   **stop**:  A pointer to a boolean that when set stops the enumeration.
825*1b3f573fSAndroid Build Coastguard Worker  **/
826*1b3f573fSAndroid Build Coastguard Worker - (void)enumerateValuesWithBlock:(void (NS_NOESCAPE ^)(float value, NSUInteger idx, BOOL *stop))block;
827*1b3f573fSAndroid Build Coastguard Worker 
828*1b3f573fSAndroid Build Coastguard Worker /**
829*1b3f573fSAndroid Build Coastguard Worker  * Enumerates the values on this array with the given block.
830*1b3f573fSAndroid Build Coastguard Worker  *
831*1b3f573fSAndroid Build Coastguard Worker  * @param opts  Options to control the enumeration.
832*1b3f573fSAndroid Build Coastguard Worker  * @param block The block to enumerate with.
833*1b3f573fSAndroid Build Coastguard Worker  *   **value**: The current value being enumerated.
834*1b3f573fSAndroid Build Coastguard Worker  *   **idx**:   The index of the current value.
835*1b3f573fSAndroid Build Coastguard Worker  *   **stop**:  A pointer to a boolean that when set stops the enumeration.
836*1b3f573fSAndroid Build Coastguard Worker  **/
837*1b3f573fSAndroid Build Coastguard Worker - (void)enumerateValuesWithOptions:(NSEnumerationOptions)opts
838*1b3f573fSAndroid Build Coastguard Worker                         usingBlock:(void (NS_NOESCAPE ^)(float value, NSUInteger idx, BOOL *stop))block;
839*1b3f573fSAndroid Build Coastguard Worker 
840*1b3f573fSAndroid Build Coastguard Worker /**
841*1b3f573fSAndroid Build Coastguard Worker  * Adds a value to this array.
842*1b3f573fSAndroid Build Coastguard Worker  *
843*1b3f573fSAndroid Build Coastguard Worker  * @param value The value to add to this array.
844*1b3f573fSAndroid Build Coastguard Worker  **/
845*1b3f573fSAndroid Build Coastguard Worker - (void)addValue:(float)value;
846*1b3f573fSAndroid Build Coastguard Worker 
847*1b3f573fSAndroid Build Coastguard Worker /**
848*1b3f573fSAndroid Build Coastguard Worker  * Adds values to this array.
849*1b3f573fSAndroid Build Coastguard Worker  *
850*1b3f573fSAndroid Build Coastguard Worker  * @param values The values to add to this array.
851*1b3f573fSAndroid Build Coastguard Worker  * @param count  The number of elements to add.
852*1b3f573fSAndroid Build Coastguard Worker  **/
853*1b3f573fSAndroid Build Coastguard Worker - (void)addValues:(const float [__nullable])values count:(NSUInteger)count;
854*1b3f573fSAndroid Build Coastguard Worker 
855*1b3f573fSAndroid Build Coastguard Worker /**
856*1b3f573fSAndroid Build Coastguard Worker  * Adds the values from the given array to this array.
857*1b3f573fSAndroid Build Coastguard Worker  *
858*1b3f573fSAndroid Build Coastguard Worker  * @param array The array containing the elements to add to this array.
859*1b3f573fSAndroid Build Coastguard Worker  **/
860*1b3f573fSAndroid Build Coastguard Worker - (void)addValuesFromArray:(GPBFloatArray *)array;
861*1b3f573fSAndroid Build Coastguard Worker 
862*1b3f573fSAndroid Build Coastguard Worker /**
863*1b3f573fSAndroid Build Coastguard Worker  * Inserts a value into the given position.
864*1b3f573fSAndroid Build Coastguard Worker  *
865*1b3f573fSAndroid Build Coastguard Worker  * @param value The value to add to this array.
866*1b3f573fSAndroid Build Coastguard Worker  * @param index The index into which to insert the value.
867*1b3f573fSAndroid Build Coastguard Worker  **/
868*1b3f573fSAndroid Build Coastguard Worker - (void)insertValue:(float)value atIndex:(NSUInteger)index;
869*1b3f573fSAndroid Build Coastguard Worker 
870*1b3f573fSAndroid Build Coastguard Worker /**
871*1b3f573fSAndroid Build Coastguard Worker  * Replaces the value at the given index with the given value.
872*1b3f573fSAndroid Build Coastguard Worker  *
873*1b3f573fSAndroid Build Coastguard Worker  * @param index The index for which to replace the value.
874*1b3f573fSAndroid Build Coastguard Worker  * @param value The value to replace with.
875*1b3f573fSAndroid Build Coastguard Worker  **/
876*1b3f573fSAndroid Build Coastguard Worker - (void)replaceValueAtIndex:(NSUInteger)index withValue:(float)value;
877*1b3f573fSAndroid Build Coastguard Worker 
878*1b3f573fSAndroid Build Coastguard Worker /**
879*1b3f573fSAndroid Build Coastguard Worker  * Removes the value at the given index.
880*1b3f573fSAndroid Build Coastguard Worker  *
881*1b3f573fSAndroid Build Coastguard Worker  * @param index The index of the value to remove.
882*1b3f573fSAndroid Build Coastguard Worker  **/
883*1b3f573fSAndroid Build Coastguard Worker - (void)removeValueAtIndex:(NSUInteger)index;
884*1b3f573fSAndroid Build Coastguard Worker 
885*1b3f573fSAndroid Build Coastguard Worker /**
886*1b3f573fSAndroid Build Coastguard Worker  * Removes all the values from this array.
887*1b3f573fSAndroid Build Coastguard Worker  **/
888*1b3f573fSAndroid Build Coastguard Worker - (void)removeAll;
889*1b3f573fSAndroid Build Coastguard Worker 
890*1b3f573fSAndroid Build Coastguard Worker /**
891*1b3f573fSAndroid Build Coastguard Worker  * Exchanges the values between the given indexes.
892*1b3f573fSAndroid Build Coastguard Worker  *
893*1b3f573fSAndroid Build Coastguard Worker  * @param idx1 The index of the first element to exchange.
894*1b3f573fSAndroid Build Coastguard Worker  * @param idx2 The index of the second element to exchange.
895*1b3f573fSAndroid Build Coastguard Worker  **/
896*1b3f573fSAndroid Build Coastguard Worker - (void)exchangeValueAtIndex:(NSUInteger)idx1
897*1b3f573fSAndroid Build Coastguard Worker             withValueAtIndex:(NSUInteger)idx2;
898*1b3f573fSAndroid Build Coastguard Worker 
899*1b3f573fSAndroid Build Coastguard Worker @end
900*1b3f573fSAndroid Build Coastguard Worker 
901*1b3f573fSAndroid Build Coastguard Worker #pragma mark - Double
902*1b3f573fSAndroid Build Coastguard Worker 
903*1b3f573fSAndroid Build Coastguard Worker /**
904*1b3f573fSAndroid Build Coastguard Worker  * Class used for repeated fields of double values. This performs better than
905*1b3f573fSAndroid Build Coastguard Worker  * boxing into NSNumbers in NSArrays.
906*1b3f573fSAndroid Build Coastguard Worker  *
907*1b3f573fSAndroid Build Coastguard Worker  * @note This class is not meant to be subclassed.
908*1b3f573fSAndroid Build Coastguard Worker  **/
909*1b3f573fSAndroid Build Coastguard Worker @interface GPBDoubleArray : NSObject <NSCopying>
910*1b3f573fSAndroid Build Coastguard Worker 
911*1b3f573fSAndroid Build Coastguard Worker /** The number of elements contained in the array. */
912*1b3f573fSAndroid Build Coastguard Worker @property(nonatomic, readonly) NSUInteger count;
913*1b3f573fSAndroid Build Coastguard Worker 
914*1b3f573fSAndroid Build Coastguard Worker /**
915*1b3f573fSAndroid Build Coastguard Worker  * @return A newly instanced and empty GPBDoubleArray.
916*1b3f573fSAndroid Build Coastguard Worker  **/
917*1b3f573fSAndroid Build Coastguard Worker + (instancetype)array;
918*1b3f573fSAndroid Build Coastguard Worker 
919*1b3f573fSAndroid Build Coastguard Worker /**
920*1b3f573fSAndroid Build Coastguard Worker  * Creates and initializes a GPBDoubleArray with the single element given.
921*1b3f573fSAndroid Build Coastguard Worker  *
922*1b3f573fSAndroid Build Coastguard Worker  * @param value The value to be placed in the array.
923*1b3f573fSAndroid Build Coastguard Worker  *
924*1b3f573fSAndroid Build Coastguard Worker  * @return A newly instanced GPBDoubleArray with value in it.
925*1b3f573fSAndroid Build Coastguard Worker  **/
926*1b3f573fSAndroid Build Coastguard Worker + (instancetype)arrayWithValue:(double)value;
927*1b3f573fSAndroid Build Coastguard Worker 
928*1b3f573fSAndroid Build Coastguard Worker /**
929*1b3f573fSAndroid Build Coastguard Worker  * Creates and initializes a GPBDoubleArray with the contents of the given
930*1b3f573fSAndroid Build Coastguard Worker  * array.
931*1b3f573fSAndroid Build Coastguard Worker  *
932*1b3f573fSAndroid Build Coastguard Worker  * @param array Array with the contents to be put into the new array.
933*1b3f573fSAndroid Build Coastguard Worker  *
934*1b3f573fSAndroid Build Coastguard Worker  * @return A newly instanced GPBDoubleArray with the contents of array.
935*1b3f573fSAndroid Build Coastguard Worker  **/
936*1b3f573fSAndroid Build Coastguard Worker + (instancetype)arrayWithValueArray:(GPBDoubleArray *)array;
937*1b3f573fSAndroid Build Coastguard Worker 
938*1b3f573fSAndroid Build Coastguard Worker /**
939*1b3f573fSAndroid Build Coastguard Worker  * Creates and initializes a GPBDoubleArray with the given capacity.
940*1b3f573fSAndroid Build Coastguard Worker  *
941*1b3f573fSAndroid Build Coastguard Worker  * @param count The capacity needed for the array.
942*1b3f573fSAndroid Build Coastguard Worker  *
943*1b3f573fSAndroid Build Coastguard Worker  * @return A newly instanced GPBDoubleArray with a capacity of count.
944*1b3f573fSAndroid Build Coastguard Worker  **/
945*1b3f573fSAndroid Build Coastguard Worker + (instancetype)arrayWithCapacity:(NSUInteger)count;
946*1b3f573fSAndroid Build Coastguard Worker 
947*1b3f573fSAndroid Build Coastguard Worker /**
948*1b3f573fSAndroid Build Coastguard Worker  * @return A newly initialized and empty GPBDoubleArray.
949*1b3f573fSAndroid Build Coastguard Worker  **/
950*1b3f573fSAndroid Build Coastguard Worker - (instancetype)init NS_DESIGNATED_INITIALIZER;
951*1b3f573fSAndroid Build Coastguard Worker 
952*1b3f573fSAndroid Build Coastguard Worker /**
953*1b3f573fSAndroid Build Coastguard Worker  * Initializes the array, copying the given values.
954*1b3f573fSAndroid Build Coastguard Worker  *
955*1b3f573fSAndroid Build Coastguard Worker  * @param values An array with the values to put inside this array.
956*1b3f573fSAndroid Build Coastguard Worker  * @param count  The number of elements to copy into the array.
957*1b3f573fSAndroid Build Coastguard Worker  *
958*1b3f573fSAndroid Build Coastguard Worker  * @return A newly initialized GPBDoubleArray with a copy of the values.
959*1b3f573fSAndroid Build Coastguard Worker  **/
960*1b3f573fSAndroid Build Coastguard Worker - (instancetype)initWithValues:(const double [__nullable])values
961*1b3f573fSAndroid Build Coastguard Worker                          count:(NSUInteger)count;
962*1b3f573fSAndroid Build Coastguard Worker 
963*1b3f573fSAndroid Build Coastguard Worker /**
964*1b3f573fSAndroid Build Coastguard Worker  * Initializes the array, copying the given values.
965*1b3f573fSAndroid Build Coastguard Worker  *
966*1b3f573fSAndroid Build Coastguard Worker  * @param array An array with the values to put inside this array.
967*1b3f573fSAndroid Build Coastguard Worker  *
968*1b3f573fSAndroid Build Coastguard Worker  * @return A newly initialized GPBDoubleArray with a copy of the values.
969*1b3f573fSAndroid Build Coastguard Worker  **/
970*1b3f573fSAndroid Build Coastguard Worker - (instancetype)initWithValueArray:(GPBDoubleArray *)array;
971*1b3f573fSAndroid Build Coastguard Worker 
972*1b3f573fSAndroid Build Coastguard Worker /**
973*1b3f573fSAndroid Build Coastguard Worker  * Initializes the array with the given capacity.
974*1b3f573fSAndroid Build Coastguard Worker  *
975*1b3f573fSAndroid Build Coastguard Worker  * @param count The capacity needed for the array.
976*1b3f573fSAndroid Build Coastguard Worker  *
977*1b3f573fSAndroid Build Coastguard Worker  * @return A newly initialized GPBDoubleArray with a capacity of count.
978*1b3f573fSAndroid Build Coastguard Worker  **/
979*1b3f573fSAndroid Build Coastguard Worker - (instancetype)initWithCapacity:(NSUInteger)count;
980*1b3f573fSAndroid Build Coastguard Worker 
981*1b3f573fSAndroid Build Coastguard Worker /**
982*1b3f573fSAndroid Build Coastguard Worker  * Gets the value at the given index.
983*1b3f573fSAndroid Build Coastguard Worker  *
984*1b3f573fSAndroid Build Coastguard Worker  * @param index The index of the value to get.
985*1b3f573fSAndroid Build Coastguard Worker  *
986*1b3f573fSAndroid Build Coastguard Worker  * @return The value at the given index.
987*1b3f573fSAndroid Build Coastguard Worker  **/
988*1b3f573fSAndroid Build Coastguard Worker - (double)valueAtIndex:(NSUInteger)index;
989*1b3f573fSAndroid Build Coastguard Worker 
990*1b3f573fSAndroid Build Coastguard Worker /**
991*1b3f573fSAndroid Build Coastguard Worker  * Enumerates the values on this array with the given block.
992*1b3f573fSAndroid Build Coastguard Worker  *
993*1b3f573fSAndroid Build Coastguard Worker  * @param block The block to enumerate with.
994*1b3f573fSAndroid Build Coastguard Worker  *   **value**: The current value being enumerated.
995*1b3f573fSAndroid Build Coastguard Worker  *   **idx**:   The index of the current value.
996*1b3f573fSAndroid Build Coastguard Worker  *   **stop**:  A pointer to a boolean that when set stops the enumeration.
997*1b3f573fSAndroid Build Coastguard Worker  **/
998*1b3f573fSAndroid Build Coastguard Worker - (void)enumerateValuesWithBlock:(void (NS_NOESCAPE ^)(double value, NSUInteger idx, BOOL *stop))block;
999*1b3f573fSAndroid Build Coastguard Worker 
1000*1b3f573fSAndroid Build Coastguard Worker /**
1001*1b3f573fSAndroid Build Coastguard Worker  * Enumerates the values on this array with the given block.
1002*1b3f573fSAndroid Build Coastguard Worker  *
1003*1b3f573fSAndroid Build Coastguard Worker  * @param opts  Options to control the enumeration.
1004*1b3f573fSAndroid Build Coastguard Worker  * @param block The block to enumerate with.
1005*1b3f573fSAndroid Build Coastguard Worker  *   **value**: The current value being enumerated.
1006*1b3f573fSAndroid Build Coastguard Worker  *   **idx**:   The index of the current value.
1007*1b3f573fSAndroid Build Coastguard Worker  *   **stop**:  A pointer to a boolean that when set stops the enumeration.
1008*1b3f573fSAndroid Build Coastguard Worker  **/
1009*1b3f573fSAndroid Build Coastguard Worker - (void)enumerateValuesWithOptions:(NSEnumerationOptions)opts
1010*1b3f573fSAndroid Build Coastguard Worker                         usingBlock:(void (NS_NOESCAPE ^)(double value, NSUInteger idx, BOOL *stop))block;
1011*1b3f573fSAndroid Build Coastguard Worker 
1012*1b3f573fSAndroid Build Coastguard Worker /**
1013*1b3f573fSAndroid Build Coastguard Worker  * Adds a value to this array.
1014*1b3f573fSAndroid Build Coastguard Worker  *
1015*1b3f573fSAndroid Build Coastguard Worker  * @param value The value to add to this array.
1016*1b3f573fSAndroid Build Coastguard Worker  **/
1017*1b3f573fSAndroid Build Coastguard Worker - (void)addValue:(double)value;
1018*1b3f573fSAndroid Build Coastguard Worker 
1019*1b3f573fSAndroid Build Coastguard Worker /**
1020*1b3f573fSAndroid Build Coastguard Worker  * Adds values to this array.
1021*1b3f573fSAndroid Build Coastguard Worker  *
1022*1b3f573fSAndroid Build Coastguard Worker  * @param values The values to add to this array.
1023*1b3f573fSAndroid Build Coastguard Worker  * @param count  The number of elements to add.
1024*1b3f573fSAndroid Build Coastguard Worker  **/
1025*1b3f573fSAndroid Build Coastguard Worker - (void)addValues:(const double [__nullable])values count:(NSUInteger)count;
1026*1b3f573fSAndroid Build Coastguard Worker 
1027*1b3f573fSAndroid Build Coastguard Worker /**
1028*1b3f573fSAndroid Build Coastguard Worker  * Adds the values from the given array to this array.
1029*1b3f573fSAndroid Build Coastguard Worker  *
1030*1b3f573fSAndroid Build Coastguard Worker  * @param array The array containing the elements to add to this array.
1031*1b3f573fSAndroid Build Coastguard Worker  **/
1032*1b3f573fSAndroid Build Coastguard Worker - (void)addValuesFromArray:(GPBDoubleArray *)array;
1033*1b3f573fSAndroid Build Coastguard Worker 
1034*1b3f573fSAndroid Build Coastguard Worker /**
1035*1b3f573fSAndroid Build Coastguard Worker  * Inserts a value into the given position.
1036*1b3f573fSAndroid Build Coastguard Worker  *
1037*1b3f573fSAndroid Build Coastguard Worker  * @param value The value to add to this array.
1038*1b3f573fSAndroid Build Coastguard Worker  * @param index The index into which to insert the value.
1039*1b3f573fSAndroid Build Coastguard Worker  **/
1040*1b3f573fSAndroid Build Coastguard Worker - (void)insertValue:(double)value atIndex:(NSUInteger)index;
1041*1b3f573fSAndroid Build Coastguard Worker 
1042*1b3f573fSAndroid Build Coastguard Worker /**
1043*1b3f573fSAndroid Build Coastguard Worker  * Replaces the value at the given index with the given value.
1044*1b3f573fSAndroid Build Coastguard Worker  *
1045*1b3f573fSAndroid Build Coastguard Worker  * @param index The index for which to replace the value.
1046*1b3f573fSAndroid Build Coastguard Worker  * @param value The value to replace with.
1047*1b3f573fSAndroid Build Coastguard Worker  **/
1048*1b3f573fSAndroid Build Coastguard Worker - (void)replaceValueAtIndex:(NSUInteger)index withValue:(double)value;
1049*1b3f573fSAndroid Build Coastguard Worker 
1050*1b3f573fSAndroid Build Coastguard Worker /**
1051*1b3f573fSAndroid Build Coastguard Worker  * Removes the value at the given index.
1052*1b3f573fSAndroid Build Coastguard Worker  *
1053*1b3f573fSAndroid Build Coastguard Worker  * @param index The index of the value to remove.
1054*1b3f573fSAndroid Build Coastguard Worker  **/
1055*1b3f573fSAndroid Build Coastguard Worker - (void)removeValueAtIndex:(NSUInteger)index;
1056*1b3f573fSAndroid Build Coastguard Worker 
1057*1b3f573fSAndroid Build Coastguard Worker /**
1058*1b3f573fSAndroid Build Coastguard Worker  * Removes all the values from this array.
1059*1b3f573fSAndroid Build Coastguard Worker  **/
1060*1b3f573fSAndroid Build Coastguard Worker - (void)removeAll;
1061*1b3f573fSAndroid Build Coastguard Worker 
1062*1b3f573fSAndroid Build Coastguard Worker /**
1063*1b3f573fSAndroid Build Coastguard Worker  * Exchanges the values between the given indexes.
1064*1b3f573fSAndroid Build Coastguard Worker  *
1065*1b3f573fSAndroid Build Coastguard Worker  * @param idx1 The index of the first element to exchange.
1066*1b3f573fSAndroid Build Coastguard Worker  * @param idx2 The index of the second element to exchange.
1067*1b3f573fSAndroid Build Coastguard Worker  **/
1068*1b3f573fSAndroid Build Coastguard Worker - (void)exchangeValueAtIndex:(NSUInteger)idx1
1069*1b3f573fSAndroid Build Coastguard Worker             withValueAtIndex:(NSUInteger)idx2;
1070*1b3f573fSAndroid Build Coastguard Worker 
1071*1b3f573fSAndroid Build Coastguard Worker @end
1072*1b3f573fSAndroid Build Coastguard Worker 
1073*1b3f573fSAndroid Build Coastguard Worker #pragma mark - Bool
1074*1b3f573fSAndroid Build Coastguard Worker 
1075*1b3f573fSAndroid Build Coastguard Worker /**
1076*1b3f573fSAndroid Build Coastguard Worker  * Class used for repeated fields of BOOL values. This performs better than
1077*1b3f573fSAndroid Build Coastguard Worker  * boxing into NSNumbers in NSArrays.
1078*1b3f573fSAndroid Build Coastguard Worker  *
1079*1b3f573fSAndroid Build Coastguard Worker  * @note This class is not meant to be subclassed.
1080*1b3f573fSAndroid Build Coastguard Worker  **/
1081*1b3f573fSAndroid Build Coastguard Worker @interface GPBBoolArray : NSObject <NSCopying>
1082*1b3f573fSAndroid Build Coastguard Worker 
1083*1b3f573fSAndroid Build Coastguard Worker /** The number of elements contained in the array. */
1084*1b3f573fSAndroid Build Coastguard Worker @property(nonatomic, readonly) NSUInteger count;
1085*1b3f573fSAndroid Build Coastguard Worker 
1086*1b3f573fSAndroid Build Coastguard Worker /**
1087*1b3f573fSAndroid Build Coastguard Worker  * @return A newly instanced and empty GPBBoolArray.
1088*1b3f573fSAndroid Build Coastguard Worker  **/
1089*1b3f573fSAndroid Build Coastguard Worker + (instancetype)array;
1090*1b3f573fSAndroid Build Coastguard Worker 
1091*1b3f573fSAndroid Build Coastguard Worker /**
1092*1b3f573fSAndroid Build Coastguard Worker  * Creates and initializes a GPBBoolArray with the single element given.
1093*1b3f573fSAndroid Build Coastguard Worker  *
1094*1b3f573fSAndroid Build Coastguard Worker  * @param value The value to be placed in the array.
1095*1b3f573fSAndroid Build Coastguard Worker  *
1096*1b3f573fSAndroid Build Coastguard Worker  * @return A newly instanced GPBBoolArray with value in it.
1097*1b3f573fSAndroid Build Coastguard Worker  **/
1098*1b3f573fSAndroid Build Coastguard Worker + (instancetype)arrayWithValue:(BOOL)value;
1099*1b3f573fSAndroid Build Coastguard Worker 
1100*1b3f573fSAndroid Build Coastguard Worker /**
1101*1b3f573fSAndroid Build Coastguard Worker  * Creates and initializes a GPBBoolArray with the contents of the given
1102*1b3f573fSAndroid Build Coastguard Worker  * array.
1103*1b3f573fSAndroid Build Coastguard Worker  *
1104*1b3f573fSAndroid Build Coastguard Worker  * @param array Array with the contents to be put into the new array.
1105*1b3f573fSAndroid Build Coastguard Worker  *
1106*1b3f573fSAndroid Build Coastguard Worker  * @return A newly instanced GPBBoolArray with the contents of array.
1107*1b3f573fSAndroid Build Coastguard Worker  **/
1108*1b3f573fSAndroid Build Coastguard Worker + (instancetype)arrayWithValueArray:(GPBBoolArray *)array;
1109*1b3f573fSAndroid Build Coastguard Worker 
1110*1b3f573fSAndroid Build Coastguard Worker /**
1111*1b3f573fSAndroid Build Coastguard Worker  * Creates and initializes a GPBBoolArray with the given capacity.
1112*1b3f573fSAndroid Build Coastguard Worker  *
1113*1b3f573fSAndroid Build Coastguard Worker  * @param count The capacity needed for the array.
1114*1b3f573fSAndroid Build Coastguard Worker  *
1115*1b3f573fSAndroid Build Coastguard Worker  * @return A newly instanced GPBBoolArray with a capacity of count.
1116*1b3f573fSAndroid Build Coastguard Worker  **/
1117*1b3f573fSAndroid Build Coastguard Worker + (instancetype)arrayWithCapacity:(NSUInteger)count;
1118*1b3f573fSAndroid Build Coastguard Worker 
1119*1b3f573fSAndroid Build Coastguard Worker /**
1120*1b3f573fSAndroid Build Coastguard Worker  * @return A newly initialized and empty GPBBoolArray.
1121*1b3f573fSAndroid Build Coastguard Worker  **/
1122*1b3f573fSAndroid Build Coastguard Worker - (instancetype)init NS_DESIGNATED_INITIALIZER;
1123*1b3f573fSAndroid Build Coastguard Worker 
1124*1b3f573fSAndroid Build Coastguard Worker /**
1125*1b3f573fSAndroid Build Coastguard Worker  * Initializes the array, copying the given values.
1126*1b3f573fSAndroid Build Coastguard Worker  *
1127*1b3f573fSAndroid Build Coastguard Worker  * @param values An array with the values to put inside this array.
1128*1b3f573fSAndroid Build Coastguard Worker  * @param count  The number of elements to copy into the array.
1129*1b3f573fSAndroid Build Coastguard Worker  *
1130*1b3f573fSAndroid Build Coastguard Worker  * @return A newly initialized GPBBoolArray with a copy of the values.
1131*1b3f573fSAndroid Build Coastguard Worker  **/
1132*1b3f573fSAndroid Build Coastguard Worker - (instancetype)initWithValues:(const BOOL [__nullable])values
1133*1b3f573fSAndroid Build Coastguard Worker                          count:(NSUInteger)count;
1134*1b3f573fSAndroid Build Coastguard Worker 
1135*1b3f573fSAndroid Build Coastguard Worker /**
1136*1b3f573fSAndroid Build Coastguard Worker  * Initializes the array, copying the given values.
1137*1b3f573fSAndroid Build Coastguard Worker  *
1138*1b3f573fSAndroid Build Coastguard Worker  * @param array An array with the values to put inside this array.
1139*1b3f573fSAndroid Build Coastguard Worker  *
1140*1b3f573fSAndroid Build Coastguard Worker  * @return A newly initialized GPBBoolArray with a copy of the values.
1141*1b3f573fSAndroid Build Coastguard Worker  **/
1142*1b3f573fSAndroid Build Coastguard Worker - (instancetype)initWithValueArray:(GPBBoolArray *)array;
1143*1b3f573fSAndroid Build Coastguard Worker 
1144*1b3f573fSAndroid Build Coastguard Worker /**
1145*1b3f573fSAndroid Build Coastguard Worker  * Initializes the array with the given capacity.
1146*1b3f573fSAndroid Build Coastguard Worker  *
1147*1b3f573fSAndroid Build Coastguard Worker  * @param count The capacity needed for the array.
1148*1b3f573fSAndroid Build Coastguard Worker  *
1149*1b3f573fSAndroid Build Coastguard Worker  * @return A newly initialized GPBBoolArray with a capacity of count.
1150*1b3f573fSAndroid Build Coastguard Worker  **/
1151*1b3f573fSAndroid Build Coastguard Worker - (instancetype)initWithCapacity:(NSUInteger)count;
1152*1b3f573fSAndroid Build Coastguard Worker 
1153*1b3f573fSAndroid Build Coastguard Worker /**
1154*1b3f573fSAndroid Build Coastguard Worker  * Gets the value at the given index.
1155*1b3f573fSAndroid Build Coastguard Worker  *
1156*1b3f573fSAndroid Build Coastguard Worker  * @param index The index of the value to get.
1157*1b3f573fSAndroid Build Coastguard Worker  *
1158*1b3f573fSAndroid Build Coastguard Worker  * @return The value at the given index.
1159*1b3f573fSAndroid Build Coastguard Worker  **/
1160*1b3f573fSAndroid Build Coastguard Worker - (BOOL)valueAtIndex:(NSUInteger)index;
1161*1b3f573fSAndroid Build Coastguard Worker 
1162*1b3f573fSAndroid Build Coastguard Worker /**
1163*1b3f573fSAndroid Build Coastguard Worker  * Enumerates the values on this array with the given block.
1164*1b3f573fSAndroid Build Coastguard Worker  *
1165*1b3f573fSAndroid Build Coastguard Worker  * @param block The block to enumerate with.
1166*1b3f573fSAndroid Build Coastguard Worker  *   **value**: The current value being enumerated.
1167*1b3f573fSAndroid Build Coastguard Worker  *   **idx**:   The index of the current value.
1168*1b3f573fSAndroid Build Coastguard Worker  *   **stop**:  A pointer to a boolean that when set stops the enumeration.
1169*1b3f573fSAndroid Build Coastguard Worker  **/
1170*1b3f573fSAndroid Build Coastguard Worker - (void)enumerateValuesWithBlock:(void (NS_NOESCAPE ^)(BOOL value, NSUInteger idx, BOOL *stop))block;
1171*1b3f573fSAndroid Build Coastguard Worker 
1172*1b3f573fSAndroid Build Coastguard Worker /**
1173*1b3f573fSAndroid Build Coastguard Worker  * Enumerates the values on this array with the given block.
1174*1b3f573fSAndroid Build Coastguard Worker  *
1175*1b3f573fSAndroid Build Coastguard Worker  * @param opts  Options to control the enumeration.
1176*1b3f573fSAndroid Build Coastguard Worker  * @param block The block to enumerate with.
1177*1b3f573fSAndroid Build Coastguard Worker  *   **value**: The current value being enumerated.
1178*1b3f573fSAndroid Build Coastguard Worker  *   **idx**:   The index of the current value.
1179*1b3f573fSAndroid Build Coastguard Worker  *   **stop**:  A pointer to a boolean that when set stops the enumeration.
1180*1b3f573fSAndroid Build Coastguard Worker  **/
1181*1b3f573fSAndroid Build Coastguard Worker - (void)enumerateValuesWithOptions:(NSEnumerationOptions)opts
1182*1b3f573fSAndroid Build Coastguard Worker                         usingBlock:(void (NS_NOESCAPE ^)(BOOL value, NSUInteger idx, BOOL *stop))block;
1183*1b3f573fSAndroid Build Coastguard Worker 
1184*1b3f573fSAndroid Build Coastguard Worker /**
1185*1b3f573fSAndroid Build Coastguard Worker  * Adds a value to this array.
1186*1b3f573fSAndroid Build Coastguard Worker  *
1187*1b3f573fSAndroid Build Coastguard Worker  * @param value The value to add to this array.
1188*1b3f573fSAndroid Build Coastguard Worker  **/
1189*1b3f573fSAndroid Build Coastguard Worker - (void)addValue:(BOOL)value;
1190*1b3f573fSAndroid Build Coastguard Worker 
1191*1b3f573fSAndroid Build Coastguard Worker /**
1192*1b3f573fSAndroid Build Coastguard Worker  * Adds values to this array.
1193*1b3f573fSAndroid Build Coastguard Worker  *
1194*1b3f573fSAndroid Build Coastguard Worker  * @param values The values to add to this array.
1195*1b3f573fSAndroid Build Coastguard Worker  * @param count  The number of elements to add.
1196*1b3f573fSAndroid Build Coastguard Worker  **/
1197*1b3f573fSAndroid Build Coastguard Worker - (void)addValues:(const BOOL [__nullable])values count:(NSUInteger)count;
1198*1b3f573fSAndroid Build Coastguard Worker 
1199*1b3f573fSAndroid Build Coastguard Worker /**
1200*1b3f573fSAndroid Build Coastguard Worker  * Adds the values from the given array to this array.
1201*1b3f573fSAndroid Build Coastguard Worker  *
1202*1b3f573fSAndroid Build Coastguard Worker  * @param array The array containing the elements to add to this array.
1203*1b3f573fSAndroid Build Coastguard Worker  **/
1204*1b3f573fSAndroid Build Coastguard Worker - (void)addValuesFromArray:(GPBBoolArray *)array;
1205*1b3f573fSAndroid Build Coastguard Worker 
1206*1b3f573fSAndroid Build Coastguard Worker /**
1207*1b3f573fSAndroid Build Coastguard Worker  * Inserts a value into the given position.
1208*1b3f573fSAndroid Build Coastguard Worker  *
1209*1b3f573fSAndroid Build Coastguard Worker  * @param value The value to add to this array.
1210*1b3f573fSAndroid Build Coastguard Worker  * @param index The index into which to insert the value.
1211*1b3f573fSAndroid Build Coastguard Worker  **/
1212*1b3f573fSAndroid Build Coastguard Worker - (void)insertValue:(BOOL)value atIndex:(NSUInteger)index;
1213*1b3f573fSAndroid Build Coastguard Worker 
1214*1b3f573fSAndroid Build Coastguard Worker /**
1215*1b3f573fSAndroid Build Coastguard Worker  * Replaces the value at the given index with the given value.
1216*1b3f573fSAndroid Build Coastguard Worker  *
1217*1b3f573fSAndroid Build Coastguard Worker  * @param index The index for which to replace the value.
1218*1b3f573fSAndroid Build Coastguard Worker  * @param value The value to replace with.
1219*1b3f573fSAndroid Build Coastguard Worker  **/
1220*1b3f573fSAndroid Build Coastguard Worker - (void)replaceValueAtIndex:(NSUInteger)index withValue:(BOOL)value;
1221*1b3f573fSAndroid Build Coastguard Worker 
1222*1b3f573fSAndroid Build Coastguard Worker /**
1223*1b3f573fSAndroid Build Coastguard Worker  * Removes the value at the given index.
1224*1b3f573fSAndroid Build Coastguard Worker  *
1225*1b3f573fSAndroid Build Coastguard Worker  * @param index The index of the value to remove.
1226*1b3f573fSAndroid Build Coastguard Worker  **/
1227*1b3f573fSAndroid Build Coastguard Worker - (void)removeValueAtIndex:(NSUInteger)index;
1228*1b3f573fSAndroid Build Coastguard Worker 
1229*1b3f573fSAndroid Build Coastguard Worker /**
1230*1b3f573fSAndroid Build Coastguard Worker  * Removes all the values from this array.
1231*1b3f573fSAndroid Build Coastguard Worker  **/
1232*1b3f573fSAndroid Build Coastguard Worker - (void)removeAll;
1233*1b3f573fSAndroid Build Coastguard Worker 
1234*1b3f573fSAndroid Build Coastguard Worker /**
1235*1b3f573fSAndroid Build Coastguard Worker  * Exchanges the values between the given indexes.
1236*1b3f573fSAndroid Build Coastguard Worker  *
1237*1b3f573fSAndroid Build Coastguard Worker  * @param idx1 The index of the first element to exchange.
1238*1b3f573fSAndroid Build Coastguard Worker  * @param idx2 The index of the second element to exchange.
1239*1b3f573fSAndroid Build Coastguard Worker  **/
1240*1b3f573fSAndroid Build Coastguard Worker - (void)exchangeValueAtIndex:(NSUInteger)idx1
1241*1b3f573fSAndroid Build Coastguard Worker             withValueAtIndex:(NSUInteger)idx2;
1242*1b3f573fSAndroid Build Coastguard Worker 
1243*1b3f573fSAndroid Build Coastguard Worker @end
1244*1b3f573fSAndroid Build Coastguard Worker 
1245*1b3f573fSAndroid Build Coastguard Worker #pragma mark - Enum
1246*1b3f573fSAndroid Build Coastguard Worker 
1247*1b3f573fSAndroid Build Coastguard Worker /**
1248*1b3f573fSAndroid Build Coastguard Worker  * This class is used for repeated fields of int32_t values. This performs
1249*1b3f573fSAndroid Build Coastguard Worker  * better than boxing into NSNumbers in NSArrays.
1250*1b3f573fSAndroid Build Coastguard Worker  *
1251*1b3f573fSAndroid Build Coastguard Worker  * @note This class is not meant to be subclassed.
1252*1b3f573fSAndroid Build Coastguard Worker  **/
1253*1b3f573fSAndroid Build Coastguard Worker @interface GPBEnumArray : NSObject <NSCopying>
1254*1b3f573fSAndroid Build Coastguard Worker 
1255*1b3f573fSAndroid Build Coastguard Worker /** The number of elements contained in the array. */
1256*1b3f573fSAndroid Build Coastguard Worker @property(nonatomic, readonly) NSUInteger count;
1257*1b3f573fSAndroid Build Coastguard Worker /** The validation function to check if the enums are valid. */
1258*1b3f573fSAndroid Build Coastguard Worker @property(nonatomic, readonly) GPBEnumValidationFunc validationFunc;
1259*1b3f573fSAndroid Build Coastguard Worker 
1260*1b3f573fSAndroid Build Coastguard Worker /**
1261*1b3f573fSAndroid Build Coastguard Worker  * @return A newly instanced and empty GPBEnumArray.
1262*1b3f573fSAndroid Build Coastguard Worker  **/
1263*1b3f573fSAndroid Build Coastguard Worker + (instancetype)array;
1264*1b3f573fSAndroid Build Coastguard Worker 
1265*1b3f573fSAndroid Build Coastguard Worker /**
1266*1b3f573fSAndroid Build Coastguard Worker  * Creates and initializes a GPBEnumArray with the enum validation function
1267*1b3f573fSAndroid Build Coastguard Worker  * given.
1268*1b3f573fSAndroid Build Coastguard Worker  *
1269*1b3f573fSAndroid Build Coastguard Worker  * @param func The enum validation function for the array.
1270*1b3f573fSAndroid Build Coastguard Worker  *
1271*1b3f573fSAndroid Build Coastguard Worker  * @return A newly instanced GPBEnumArray.
1272*1b3f573fSAndroid Build Coastguard Worker  **/
1273*1b3f573fSAndroid Build Coastguard Worker + (instancetype)arrayWithValidationFunction:(nullable GPBEnumValidationFunc)func;
1274*1b3f573fSAndroid Build Coastguard Worker 
1275*1b3f573fSAndroid Build Coastguard Worker /**
1276*1b3f573fSAndroid Build Coastguard Worker  * Creates and initializes a GPBEnumArray with the enum validation function
1277*1b3f573fSAndroid Build Coastguard Worker  * given and the single raw value given.
1278*1b3f573fSAndroid Build Coastguard Worker  *
1279*1b3f573fSAndroid Build Coastguard Worker  * @param func  The enum validation function for the array.
1280*1b3f573fSAndroid Build Coastguard Worker  * @param value The raw value to add to this array.
1281*1b3f573fSAndroid Build Coastguard Worker  *
1282*1b3f573fSAndroid Build Coastguard Worker  * @return A newly instanced GPBEnumArray.
1283*1b3f573fSAndroid Build Coastguard Worker  **/
1284*1b3f573fSAndroid Build Coastguard Worker + (instancetype)arrayWithValidationFunction:(nullable GPBEnumValidationFunc)func
1285*1b3f573fSAndroid Build Coastguard Worker                                    rawValue:(int32_t)value;
1286*1b3f573fSAndroid Build Coastguard Worker 
1287*1b3f573fSAndroid Build Coastguard Worker /**
1288*1b3f573fSAndroid Build Coastguard Worker  * Creates and initializes a GPBEnumArray that adds the elements from the
1289*1b3f573fSAndroid Build Coastguard Worker  * given array.
1290*1b3f573fSAndroid Build Coastguard Worker  *
1291*1b3f573fSAndroid Build Coastguard Worker  * @param array Array containing the values to add to the new array.
1292*1b3f573fSAndroid Build Coastguard Worker  *
1293*1b3f573fSAndroid Build Coastguard Worker  * @return A newly instanced GPBEnumArray.
1294*1b3f573fSAndroid Build Coastguard Worker  **/
1295*1b3f573fSAndroid Build Coastguard Worker + (instancetype)arrayWithValueArray:(GPBEnumArray *)array;
1296*1b3f573fSAndroid Build Coastguard Worker 
1297*1b3f573fSAndroid Build Coastguard Worker /**
1298*1b3f573fSAndroid Build Coastguard Worker  * Creates and initializes a GPBEnumArray with the given enum validation
1299*1b3f573fSAndroid Build Coastguard Worker  * function and with the givencapacity.
1300*1b3f573fSAndroid Build Coastguard Worker  *
1301*1b3f573fSAndroid Build Coastguard Worker  * @param func  The enum validation function for the array.
1302*1b3f573fSAndroid Build Coastguard Worker  * @param count The capacity needed for the array.
1303*1b3f573fSAndroid Build Coastguard Worker  *
1304*1b3f573fSAndroid Build Coastguard Worker  * @return A newly instanced GPBEnumArray with a capacity of count.
1305*1b3f573fSAndroid Build Coastguard Worker  **/
1306*1b3f573fSAndroid Build Coastguard Worker + (instancetype)arrayWithValidationFunction:(nullable GPBEnumValidationFunc)func
1307*1b3f573fSAndroid Build Coastguard Worker                                    capacity:(NSUInteger)count;
1308*1b3f573fSAndroid Build Coastguard Worker 
1309*1b3f573fSAndroid Build Coastguard Worker /**
1310*1b3f573fSAndroid Build Coastguard Worker  * Initializes the array with the given enum validation function.
1311*1b3f573fSAndroid Build Coastguard Worker  *
1312*1b3f573fSAndroid Build Coastguard Worker  * @param func The enum validation function for the array.
1313*1b3f573fSAndroid Build Coastguard Worker  *
1314*1b3f573fSAndroid Build Coastguard Worker  * @return A newly initialized GPBEnumArray with a copy of the values.
1315*1b3f573fSAndroid Build Coastguard Worker  **/
1316*1b3f573fSAndroid Build Coastguard Worker - (instancetype)initWithValidationFunction:(nullable GPBEnumValidationFunc)func
1317*1b3f573fSAndroid Build Coastguard Worker     NS_DESIGNATED_INITIALIZER;
1318*1b3f573fSAndroid Build Coastguard Worker 
1319*1b3f573fSAndroid Build Coastguard Worker /**
1320*1b3f573fSAndroid Build Coastguard Worker  * Initializes the array, copying the given values.
1321*1b3f573fSAndroid Build Coastguard Worker  *
1322*1b3f573fSAndroid Build Coastguard Worker  * @param func   The enum validation function for the array.
1323*1b3f573fSAndroid Build Coastguard Worker  * @param values An array with the values to put inside this array.
1324*1b3f573fSAndroid Build Coastguard Worker  * @param count  The number of elements to copy into the array.
1325*1b3f573fSAndroid Build Coastguard Worker  *
1326*1b3f573fSAndroid Build Coastguard Worker  * @return A newly initialized GPBEnumArray with a copy of the values.
1327*1b3f573fSAndroid Build Coastguard Worker  **/
1328*1b3f573fSAndroid Build Coastguard Worker - (instancetype)initWithValidationFunction:(nullable GPBEnumValidationFunc)func
1329*1b3f573fSAndroid Build Coastguard Worker                                  rawValues:(const int32_t [__nullable])values
1330*1b3f573fSAndroid Build Coastguard Worker                                      count:(NSUInteger)count;
1331*1b3f573fSAndroid Build Coastguard Worker 
1332*1b3f573fSAndroid Build Coastguard Worker /**
1333*1b3f573fSAndroid Build Coastguard Worker  * Initializes the array, copying the given values.
1334*1b3f573fSAndroid Build Coastguard Worker  *
1335*1b3f573fSAndroid Build Coastguard Worker  * @param array An array with the values to put inside this array.
1336*1b3f573fSAndroid Build Coastguard Worker  *
1337*1b3f573fSAndroid Build Coastguard Worker  * @return A newly initialized GPBEnumArray with a copy of the values.
1338*1b3f573fSAndroid Build Coastguard Worker  **/
1339*1b3f573fSAndroid Build Coastguard Worker - (instancetype)initWithValueArray:(GPBEnumArray *)array;
1340*1b3f573fSAndroid Build Coastguard Worker 
1341*1b3f573fSAndroid Build Coastguard Worker /**
1342*1b3f573fSAndroid Build Coastguard Worker  * Initializes the array with the given capacity.
1343*1b3f573fSAndroid Build Coastguard Worker  *
1344*1b3f573fSAndroid Build Coastguard Worker  * @param func  The enum validation function for the array.
1345*1b3f573fSAndroid Build Coastguard Worker  * @param count The capacity needed for the array.
1346*1b3f573fSAndroid Build Coastguard Worker  *
1347*1b3f573fSAndroid Build Coastguard Worker  * @return A newly initialized GPBEnumArray with a capacity of count.
1348*1b3f573fSAndroid Build Coastguard Worker  **/
1349*1b3f573fSAndroid Build Coastguard Worker - (instancetype)initWithValidationFunction:(nullable GPBEnumValidationFunc)func
1350*1b3f573fSAndroid Build Coastguard Worker                                   capacity:(NSUInteger)count;
1351*1b3f573fSAndroid Build Coastguard Worker 
1352*1b3f573fSAndroid Build Coastguard Worker // These will return kGPBUnrecognizedEnumeratorValue if the value at index is not a
1353*1b3f573fSAndroid Build Coastguard Worker // valid enumerator as defined by validationFunc. If the actual value is
1354*1b3f573fSAndroid Build Coastguard Worker // desired, use "raw" version of the method.
1355*1b3f573fSAndroid Build Coastguard Worker 
1356*1b3f573fSAndroid Build Coastguard Worker /**
1357*1b3f573fSAndroid Build Coastguard Worker  * Gets the value at the given index.
1358*1b3f573fSAndroid Build Coastguard Worker  *
1359*1b3f573fSAndroid Build Coastguard Worker  * @param index The index of the value to get.
1360*1b3f573fSAndroid Build Coastguard Worker  *
1361*1b3f573fSAndroid Build Coastguard Worker  * @return The value at the given index.
1362*1b3f573fSAndroid Build Coastguard Worker  **/
1363*1b3f573fSAndroid Build Coastguard Worker - (int32_t)valueAtIndex:(NSUInteger)index;
1364*1b3f573fSAndroid Build Coastguard Worker 
1365*1b3f573fSAndroid Build Coastguard Worker /**
1366*1b3f573fSAndroid Build Coastguard Worker  * Enumerates the values on this array with the given block.
1367*1b3f573fSAndroid Build Coastguard Worker  *
1368*1b3f573fSAndroid Build Coastguard Worker  * @param block The block to enumerate with.
1369*1b3f573fSAndroid Build Coastguard Worker  *   **value**: The current value being enumerated.
1370*1b3f573fSAndroid Build Coastguard Worker  *   **idx**:   The index of the current value.
1371*1b3f573fSAndroid Build Coastguard Worker  *   **stop**:  A pointer to a boolean that when set stops the enumeration.
1372*1b3f573fSAndroid Build Coastguard Worker  **/
1373*1b3f573fSAndroid Build Coastguard Worker - (void)enumerateValuesWithBlock:(void (NS_NOESCAPE ^)(int32_t value, NSUInteger idx, BOOL *stop))block;
1374*1b3f573fSAndroid Build Coastguard Worker 
1375*1b3f573fSAndroid Build Coastguard Worker /**
1376*1b3f573fSAndroid Build Coastguard Worker  * Enumerates the values on this array with the given block.
1377*1b3f573fSAndroid Build Coastguard Worker  *
1378*1b3f573fSAndroid Build Coastguard Worker  * @param opts  Options to control the enumeration.
1379*1b3f573fSAndroid Build Coastguard Worker  * @param block The block to enumerate with.
1380*1b3f573fSAndroid Build Coastguard Worker  *   **value**: The current value being enumerated.
1381*1b3f573fSAndroid Build Coastguard Worker  *   **idx**:   The index of the current value.
1382*1b3f573fSAndroid Build Coastguard Worker  *   **stop**:  A pointer to a boolean that when set stops the enumeration.
1383*1b3f573fSAndroid Build Coastguard Worker  **/
1384*1b3f573fSAndroid Build Coastguard Worker - (void)enumerateValuesWithOptions:(NSEnumerationOptions)opts
1385*1b3f573fSAndroid Build Coastguard Worker                         usingBlock:(void (NS_NOESCAPE ^)(int32_t value, NSUInteger idx, BOOL *stop))block;
1386*1b3f573fSAndroid Build Coastguard Worker 
1387*1b3f573fSAndroid Build Coastguard Worker // These methods bypass the validationFunc to provide access to values that were not
1388*1b3f573fSAndroid Build Coastguard Worker // known at the time the binary was compiled.
1389*1b3f573fSAndroid Build Coastguard Worker 
1390*1b3f573fSAndroid Build Coastguard Worker /**
1391*1b3f573fSAndroid Build Coastguard Worker  * Gets the raw enum value at the given index.
1392*1b3f573fSAndroid Build Coastguard Worker  *
1393*1b3f573fSAndroid Build Coastguard Worker  * @param index The index of the raw enum value to get.
1394*1b3f573fSAndroid Build Coastguard Worker  *
1395*1b3f573fSAndroid Build Coastguard Worker  * @return The raw enum value at the given index.
1396*1b3f573fSAndroid Build Coastguard Worker  **/
1397*1b3f573fSAndroid Build Coastguard Worker - (int32_t)rawValueAtIndex:(NSUInteger)index;
1398*1b3f573fSAndroid Build Coastguard Worker 
1399*1b3f573fSAndroid Build Coastguard Worker /**
1400*1b3f573fSAndroid Build Coastguard Worker  * Enumerates the values on this array with the given block.
1401*1b3f573fSAndroid Build Coastguard Worker  *
1402*1b3f573fSAndroid Build Coastguard Worker  * @param block The block to enumerate with.
1403*1b3f573fSAndroid Build Coastguard Worker  *   **value**: The current value being enumerated.
1404*1b3f573fSAndroid Build Coastguard Worker  *   **idx**:   The index of the current value.
1405*1b3f573fSAndroid Build Coastguard Worker  *   **stop**:  A pointer to a boolean that when set stops the enumeration.
1406*1b3f573fSAndroid Build Coastguard Worker  **/
1407*1b3f573fSAndroid Build Coastguard Worker - (void)enumerateRawValuesWithBlock:(void (NS_NOESCAPE ^)(int32_t value, NSUInteger idx, BOOL *stop))block;
1408*1b3f573fSAndroid Build Coastguard Worker 
1409*1b3f573fSAndroid Build Coastguard Worker /**
1410*1b3f573fSAndroid Build Coastguard Worker  * Enumerates the values on this array with the given block.
1411*1b3f573fSAndroid Build Coastguard Worker  *
1412*1b3f573fSAndroid Build Coastguard Worker  * @param opts  Options to control the enumeration.
1413*1b3f573fSAndroid Build Coastguard Worker  * @param block The block to enumerate with.
1414*1b3f573fSAndroid Build Coastguard Worker  *   **value**: The current value being enumerated.
1415*1b3f573fSAndroid Build Coastguard Worker  *   **idx**:   The index of the current value.
1416*1b3f573fSAndroid Build Coastguard Worker  *   **stop**:  A pointer to a boolean that when set stops the enumeration.
1417*1b3f573fSAndroid Build Coastguard Worker  **/
1418*1b3f573fSAndroid Build Coastguard Worker - (void)enumerateRawValuesWithOptions:(NSEnumerationOptions)opts
1419*1b3f573fSAndroid Build Coastguard Worker                            usingBlock:(void (NS_NOESCAPE ^)(int32_t value, NSUInteger idx, BOOL *stop))block;
1420*1b3f573fSAndroid Build Coastguard Worker 
1421*1b3f573fSAndroid Build Coastguard Worker // If value is not a valid enumerator as defined by validationFunc, these
1422*1b3f573fSAndroid Build Coastguard Worker // methods will assert in debug, and will log in release and assign the value
1423*1b3f573fSAndroid Build Coastguard Worker // to the default value. Use the rawValue methods below to assign non enumerator
1424*1b3f573fSAndroid Build Coastguard Worker // values.
1425*1b3f573fSAndroid Build Coastguard Worker 
1426*1b3f573fSAndroid Build Coastguard Worker /**
1427*1b3f573fSAndroid Build Coastguard Worker  * Adds a value to this array.
1428*1b3f573fSAndroid Build Coastguard Worker  *
1429*1b3f573fSAndroid Build Coastguard Worker  * @param value The value to add to this array.
1430*1b3f573fSAndroid Build Coastguard Worker  **/
1431*1b3f573fSAndroid Build Coastguard Worker - (void)addValue:(int32_t)value;
1432*1b3f573fSAndroid Build Coastguard Worker 
1433*1b3f573fSAndroid Build Coastguard Worker /**
1434*1b3f573fSAndroid Build Coastguard Worker  * Adds values to this array.
1435*1b3f573fSAndroid Build Coastguard Worker  *
1436*1b3f573fSAndroid Build Coastguard Worker  * @param values The values to add to this array.
1437*1b3f573fSAndroid Build Coastguard Worker  * @param count  The number of elements to add.
1438*1b3f573fSAndroid Build Coastguard Worker  **/
1439*1b3f573fSAndroid Build Coastguard Worker - (void)addValues:(const int32_t [__nullable])values count:(NSUInteger)count;
1440*1b3f573fSAndroid Build Coastguard Worker 
1441*1b3f573fSAndroid Build Coastguard Worker 
1442*1b3f573fSAndroid Build Coastguard Worker /**
1443*1b3f573fSAndroid Build Coastguard Worker  * Inserts a value into the given position.
1444*1b3f573fSAndroid Build Coastguard Worker  *
1445*1b3f573fSAndroid Build Coastguard Worker  * @param value The value to add to this array.
1446*1b3f573fSAndroid Build Coastguard Worker  * @param index The index into which to insert the value.
1447*1b3f573fSAndroid Build Coastguard Worker  **/
1448*1b3f573fSAndroid Build Coastguard Worker - (void)insertValue:(int32_t)value atIndex:(NSUInteger)index;
1449*1b3f573fSAndroid Build Coastguard Worker 
1450*1b3f573fSAndroid Build Coastguard Worker /**
1451*1b3f573fSAndroid Build Coastguard Worker  * Replaces the value at the given index with the given value.
1452*1b3f573fSAndroid Build Coastguard Worker  *
1453*1b3f573fSAndroid Build Coastguard Worker  * @param index The index for which to replace the value.
1454*1b3f573fSAndroid Build Coastguard Worker  * @param value The value to replace with.
1455*1b3f573fSAndroid Build Coastguard Worker  **/
1456*1b3f573fSAndroid Build Coastguard Worker - (void)replaceValueAtIndex:(NSUInteger)index withValue:(int32_t)value;
1457*1b3f573fSAndroid Build Coastguard Worker 
1458*1b3f573fSAndroid Build Coastguard Worker // These methods bypass the validationFunc to provide setting of values that were not
1459*1b3f573fSAndroid Build Coastguard Worker // known at the time the binary was compiled.
1460*1b3f573fSAndroid Build Coastguard Worker 
1461*1b3f573fSAndroid Build Coastguard Worker /**
1462*1b3f573fSAndroid Build Coastguard Worker  * Adds a raw enum value to this array.
1463*1b3f573fSAndroid Build Coastguard Worker  *
1464*1b3f573fSAndroid Build Coastguard Worker  * @note This method bypass the validationFunc to enable the setting of values that
1465*1b3f573fSAndroid Build Coastguard Worker  *       were not known at the time the binary was compiled.
1466*1b3f573fSAndroid Build Coastguard Worker  *
1467*1b3f573fSAndroid Build Coastguard Worker  * @param value The raw enum value to add to the array.
1468*1b3f573fSAndroid Build Coastguard Worker  **/
1469*1b3f573fSAndroid Build Coastguard Worker - (void)addRawValue:(int32_t)value;
1470*1b3f573fSAndroid Build Coastguard Worker 
1471*1b3f573fSAndroid Build Coastguard Worker /**
1472*1b3f573fSAndroid Build Coastguard Worker  * Adds raw enum values to this array.
1473*1b3f573fSAndroid Build Coastguard Worker  *
1474*1b3f573fSAndroid Build Coastguard Worker  * @note This method bypass the validationFunc to enable the setting of values that
1475*1b3f573fSAndroid Build Coastguard Worker  *       were not known at the time the binary was compiled.
1476*1b3f573fSAndroid Build Coastguard Worker  *
1477*1b3f573fSAndroid Build Coastguard Worker  * @param array Array containing the raw enum values to add to this array.
1478*1b3f573fSAndroid Build Coastguard Worker  **/
1479*1b3f573fSAndroid Build Coastguard Worker - (void)addRawValuesFromArray:(GPBEnumArray *)array;
1480*1b3f573fSAndroid Build Coastguard Worker 
1481*1b3f573fSAndroid Build Coastguard Worker /**
1482*1b3f573fSAndroid Build Coastguard Worker  * Adds raw enum values to this array.
1483*1b3f573fSAndroid Build Coastguard Worker  *
1484*1b3f573fSAndroid Build Coastguard Worker  * @note This method bypass the validationFunc to enable the setting of values that
1485*1b3f573fSAndroid Build Coastguard Worker  *       were not known at the time the binary was compiled.
1486*1b3f573fSAndroid Build Coastguard Worker  *
1487*1b3f573fSAndroid Build Coastguard Worker  * @param values Array containing the raw enum values to add to this array.
1488*1b3f573fSAndroid Build Coastguard Worker  * @param count  The number of raw values to add.
1489*1b3f573fSAndroid Build Coastguard Worker  **/
1490*1b3f573fSAndroid Build Coastguard Worker - (void)addRawValues:(const int32_t [__nullable])values count:(NSUInteger)count;
1491*1b3f573fSAndroid Build Coastguard Worker 
1492*1b3f573fSAndroid Build Coastguard Worker /**
1493*1b3f573fSAndroid Build Coastguard Worker  * Inserts a raw enum value at the given index.
1494*1b3f573fSAndroid Build Coastguard Worker  *
1495*1b3f573fSAndroid Build Coastguard Worker  * @note This method bypass the validationFunc to enable the setting of values that
1496*1b3f573fSAndroid Build Coastguard Worker  *       were not known at the time the binary was compiled.
1497*1b3f573fSAndroid Build Coastguard Worker  *
1498*1b3f573fSAndroid Build Coastguard Worker  * @param value Raw enum value to add.
1499*1b3f573fSAndroid Build Coastguard Worker  * @param index The index into which to insert the value.
1500*1b3f573fSAndroid Build Coastguard Worker  **/
1501*1b3f573fSAndroid Build Coastguard Worker - (void)insertRawValue:(int32_t)value atIndex:(NSUInteger)index;
1502*1b3f573fSAndroid Build Coastguard Worker 
1503*1b3f573fSAndroid Build Coastguard Worker /**
1504*1b3f573fSAndroid Build Coastguard Worker  * Replaces the raw enum value at the given index with the given value.
1505*1b3f573fSAndroid Build Coastguard Worker  *
1506*1b3f573fSAndroid Build Coastguard Worker  * @note This method bypass the validationFunc to enable the setting of values that
1507*1b3f573fSAndroid Build Coastguard Worker  *       were not known at the time the binary was compiled.
1508*1b3f573fSAndroid Build Coastguard Worker  *
1509*1b3f573fSAndroid Build Coastguard Worker  * @param index The index for which to replace the value.
1510*1b3f573fSAndroid Build Coastguard Worker  * @param value The raw enum value to replace with.
1511*1b3f573fSAndroid Build Coastguard Worker  **/
1512*1b3f573fSAndroid Build Coastguard Worker - (void)replaceValueAtIndex:(NSUInteger)index withRawValue:(int32_t)value;
1513*1b3f573fSAndroid Build Coastguard Worker 
1514*1b3f573fSAndroid Build Coastguard Worker // No validation applies to these methods.
1515*1b3f573fSAndroid Build Coastguard Worker 
1516*1b3f573fSAndroid Build Coastguard Worker /**
1517*1b3f573fSAndroid Build Coastguard Worker  * Removes the value at the given index.
1518*1b3f573fSAndroid Build Coastguard Worker  *
1519*1b3f573fSAndroid Build Coastguard Worker  * @param index The index of the value to remove.
1520*1b3f573fSAndroid Build Coastguard Worker  **/
1521*1b3f573fSAndroid Build Coastguard Worker - (void)removeValueAtIndex:(NSUInteger)index;
1522*1b3f573fSAndroid Build Coastguard Worker 
1523*1b3f573fSAndroid Build Coastguard Worker /**
1524*1b3f573fSAndroid Build Coastguard Worker  * Removes all the values from this array.
1525*1b3f573fSAndroid Build Coastguard Worker  **/
1526*1b3f573fSAndroid Build Coastguard Worker - (void)removeAll;
1527*1b3f573fSAndroid Build Coastguard Worker 
1528*1b3f573fSAndroid Build Coastguard Worker /**
1529*1b3f573fSAndroid Build Coastguard Worker  * Exchanges the values between the given indexes.
1530*1b3f573fSAndroid Build Coastguard Worker  *
1531*1b3f573fSAndroid Build Coastguard Worker  * @param idx1 The index of the first element to exchange.
1532*1b3f573fSAndroid Build Coastguard Worker  * @param idx2 The index of the second element to exchange.
1533*1b3f573fSAndroid Build Coastguard Worker  **/
1534*1b3f573fSAndroid Build Coastguard Worker - (void)exchangeValueAtIndex:(NSUInteger)idx1
1535*1b3f573fSAndroid Build Coastguard Worker             withValueAtIndex:(NSUInteger)idx2;
1536*1b3f573fSAndroid Build Coastguard Worker 
1537*1b3f573fSAndroid Build Coastguard Worker @end
1538*1b3f573fSAndroid Build Coastguard Worker 
1539*1b3f573fSAndroid Build Coastguard Worker // clang-format on
1540*1b3f573fSAndroid Build Coastguard Worker //%PDDM-EXPAND-END DECLARE_ARRAYS()
1541*1b3f573fSAndroid Build Coastguard Worker 
1542*1b3f573fSAndroid Build Coastguard Worker NS_ASSUME_NONNULL_END
1543*1b3f573fSAndroid Build Coastguard Worker 
1544*1b3f573fSAndroid Build Coastguard Worker //%PDDM-DEFINE DECLARE_ARRAYS()
1545*1b3f573fSAndroid Build Coastguard Worker //%ARRAY_INTERFACE_SIMPLE(Int32, int32_t)
1546*1b3f573fSAndroid Build Coastguard Worker //%ARRAY_INTERFACE_SIMPLE(UInt32, uint32_t)
1547*1b3f573fSAndroid Build Coastguard Worker //%ARRAY_INTERFACE_SIMPLE(Int64, int64_t)
1548*1b3f573fSAndroid Build Coastguard Worker //%ARRAY_INTERFACE_SIMPLE(UInt64, uint64_t)
1549*1b3f573fSAndroid Build Coastguard Worker //%ARRAY_INTERFACE_SIMPLE(Float, float)
1550*1b3f573fSAndroid Build Coastguard Worker //%ARRAY_INTERFACE_SIMPLE(Double, double)
1551*1b3f573fSAndroid Build Coastguard Worker //%ARRAY_INTERFACE_SIMPLE(Bool, BOOL)
1552*1b3f573fSAndroid Build Coastguard Worker //%ARRAY_INTERFACE_ENUM(Enum, int32_t)
1553*1b3f573fSAndroid Build Coastguard Worker 
1554*1b3f573fSAndroid Build Coastguard Worker //
1555*1b3f573fSAndroid Build Coastguard Worker // The common case (everything but Enum)
1556*1b3f573fSAndroid Build Coastguard Worker //
1557*1b3f573fSAndroid Build Coastguard Worker 
1558*1b3f573fSAndroid Build Coastguard Worker //%PDDM-DEFINE ARRAY_INTERFACE_SIMPLE(NAME, TYPE)
1559*1b3f573fSAndroid Build Coastguard Worker //%#pragma mark - NAME
1560*1b3f573fSAndroid Build Coastguard Worker //%
1561*1b3f573fSAndroid Build Coastguard Worker //%/**
1562*1b3f573fSAndroid Build Coastguard Worker //% * Class used for repeated fields of ##TYPE## values. This performs better than
1563*1b3f573fSAndroid Build Coastguard Worker //% * boxing into NSNumbers in NSArrays.
1564*1b3f573fSAndroid Build Coastguard Worker //% *
1565*1b3f573fSAndroid Build Coastguard Worker //% * @note This class is not meant to be subclassed.
1566*1b3f573fSAndroid Build Coastguard Worker //% **/
1567*1b3f573fSAndroid Build Coastguard Worker //%@interface GPB##NAME##Array : NSObject <NSCopying>
1568*1b3f573fSAndroid Build Coastguard Worker //%
1569*1b3f573fSAndroid Build Coastguard Worker //%/** The number of elements contained in the array. */
1570*1b3f573fSAndroid Build Coastguard Worker //%@property(nonatomic, readonly) NSUInteger count;
1571*1b3f573fSAndroid Build Coastguard Worker //%
1572*1b3f573fSAndroid Build Coastguard Worker //%/**
1573*1b3f573fSAndroid Build Coastguard Worker //% * @return A newly instanced and empty GPB##NAME##Array.
1574*1b3f573fSAndroid Build Coastguard Worker //% **/
1575*1b3f573fSAndroid Build Coastguard Worker //%+ (instancetype)array;
1576*1b3f573fSAndroid Build Coastguard Worker //%
1577*1b3f573fSAndroid Build Coastguard Worker //%/**
1578*1b3f573fSAndroid Build Coastguard Worker //% * Creates and initializes a GPB##NAME##Array with the single element given.
1579*1b3f573fSAndroid Build Coastguard Worker //% *
1580*1b3f573fSAndroid Build Coastguard Worker //% * @param value The value to be placed in the array.
1581*1b3f573fSAndroid Build Coastguard Worker //% *
1582*1b3f573fSAndroid Build Coastguard Worker //% * @return A newly instanced GPB##NAME##Array with value in it.
1583*1b3f573fSAndroid Build Coastguard Worker //% **/
1584*1b3f573fSAndroid Build Coastguard Worker //%+ (instancetype)arrayWithValue:(TYPE)value;
1585*1b3f573fSAndroid Build Coastguard Worker //%
1586*1b3f573fSAndroid Build Coastguard Worker //%/**
1587*1b3f573fSAndroid Build Coastguard Worker //% * Creates and initializes a GPB##NAME##Array with the contents of the given
1588*1b3f573fSAndroid Build Coastguard Worker //% * array.
1589*1b3f573fSAndroid Build Coastguard Worker //% *
1590*1b3f573fSAndroid Build Coastguard Worker //% * @param array Array with the contents to be put into the new array.
1591*1b3f573fSAndroid Build Coastguard Worker //% *
1592*1b3f573fSAndroid Build Coastguard Worker //% * @return A newly instanced GPB##NAME##Array with the contents of array.
1593*1b3f573fSAndroid Build Coastguard Worker //% **/
1594*1b3f573fSAndroid Build Coastguard Worker //%+ (instancetype)arrayWithValueArray:(GPB##NAME##Array *)array;
1595*1b3f573fSAndroid Build Coastguard Worker //%
1596*1b3f573fSAndroid Build Coastguard Worker //%/**
1597*1b3f573fSAndroid Build Coastguard Worker //% * Creates and initializes a GPB##NAME##Array with the given capacity.
1598*1b3f573fSAndroid Build Coastguard Worker //% *
1599*1b3f573fSAndroid Build Coastguard Worker //% * @param count The capacity needed for the array.
1600*1b3f573fSAndroid Build Coastguard Worker //% *
1601*1b3f573fSAndroid Build Coastguard Worker //% * @return A newly instanced GPB##NAME##Array with a capacity of count.
1602*1b3f573fSAndroid Build Coastguard Worker //% **/
1603*1b3f573fSAndroid Build Coastguard Worker //%+ (instancetype)arrayWithCapacity:(NSUInteger)count;
1604*1b3f573fSAndroid Build Coastguard Worker //%
1605*1b3f573fSAndroid Build Coastguard Worker //%/**
1606*1b3f573fSAndroid Build Coastguard Worker //% * @return A newly initialized and empty GPB##NAME##Array.
1607*1b3f573fSAndroid Build Coastguard Worker //% **/
1608*1b3f573fSAndroid Build Coastguard Worker //%- (instancetype)init NS_DESIGNATED_INITIALIZER;
1609*1b3f573fSAndroid Build Coastguard Worker //%
1610*1b3f573fSAndroid Build Coastguard Worker //%/**
1611*1b3f573fSAndroid Build Coastguard Worker //% * Initializes the array, copying the given values.
1612*1b3f573fSAndroid Build Coastguard Worker //% *
1613*1b3f573fSAndroid Build Coastguard Worker //% * @param values An array with the values to put inside this array.
1614*1b3f573fSAndroid Build Coastguard Worker //% * @param count  The number of elements to copy into the array.
1615*1b3f573fSAndroid Build Coastguard Worker //% *
1616*1b3f573fSAndroid Build Coastguard Worker //% * @return A newly initialized GPB##NAME##Array with a copy of the values.
1617*1b3f573fSAndroid Build Coastguard Worker //% **/
1618*1b3f573fSAndroid Build Coastguard Worker //%- (instancetype)initWithValues:(const TYPE [__nullable])values
1619*1b3f573fSAndroid Build Coastguard Worker //%                         count:(NSUInteger)count;
1620*1b3f573fSAndroid Build Coastguard Worker //%
1621*1b3f573fSAndroid Build Coastguard Worker //%/**
1622*1b3f573fSAndroid Build Coastguard Worker //% * Initializes the array, copying the given values.
1623*1b3f573fSAndroid Build Coastguard Worker //% *
1624*1b3f573fSAndroid Build Coastguard Worker //% * @param array An array with the values to put inside this array.
1625*1b3f573fSAndroid Build Coastguard Worker //% *
1626*1b3f573fSAndroid Build Coastguard Worker //% * @return A newly initialized GPB##NAME##Array with a copy of the values.
1627*1b3f573fSAndroid Build Coastguard Worker //% **/
1628*1b3f573fSAndroid Build Coastguard Worker //%- (instancetype)initWithValueArray:(GPB##NAME##Array *)array;
1629*1b3f573fSAndroid Build Coastguard Worker //%
1630*1b3f573fSAndroid Build Coastguard Worker //%/**
1631*1b3f573fSAndroid Build Coastguard Worker //% * Initializes the array with the given capacity.
1632*1b3f573fSAndroid Build Coastguard Worker //% *
1633*1b3f573fSAndroid Build Coastguard Worker //% * @param count The capacity needed for the array.
1634*1b3f573fSAndroid Build Coastguard Worker //% *
1635*1b3f573fSAndroid Build Coastguard Worker //% * @return A newly initialized GPB##NAME##Array with a capacity of count.
1636*1b3f573fSAndroid Build Coastguard Worker //% **/
1637*1b3f573fSAndroid Build Coastguard Worker //%- (instancetype)initWithCapacity:(NSUInteger)count;
1638*1b3f573fSAndroid Build Coastguard Worker //%
1639*1b3f573fSAndroid Build Coastguard Worker //%ARRAY_IMMUTABLE_INTERFACE(NAME, TYPE, Basic)
1640*1b3f573fSAndroid Build Coastguard Worker //%
1641*1b3f573fSAndroid Build Coastguard Worker //%ARRAY_MUTABLE_INTERFACE(NAME, TYPE, Basic)
1642*1b3f573fSAndroid Build Coastguard Worker //%
1643*1b3f573fSAndroid Build Coastguard Worker //%@end
1644*1b3f573fSAndroid Build Coastguard Worker //%
1645*1b3f573fSAndroid Build Coastguard Worker 
1646*1b3f573fSAndroid Build Coastguard Worker //
1647*1b3f573fSAndroid Build Coastguard Worker // Macros specific to Enums (to tweak their interface).
1648*1b3f573fSAndroid Build Coastguard Worker //
1649*1b3f573fSAndroid Build Coastguard Worker 
1650*1b3f573fSAndroid Build Coastguard Worker //%PDDM-DEFINE ARRAY_INTERFACE_ENUM(NAME, TYPE)
1651*1b3f573fSAndroid Build Coastguard Worker //%#pragma mark - NAME
1652*1b3f573fSAndroid Build Coastguard Worker //%
1653*1b3f573fSAndroid Build Coastguard Worker //%/**
1654*1b3f573fSAndroid Build Coastguard Worker //% * This class is used for repeated fields of ##TYPE## values. This performs
1655*1b3f573fSAndroid Build Coastguard Worker //% * better than boxing into NSNumbers in NSArrays.
1656*1b3f573fSAndroid Build Coastguard Worker //% *
1657*1b3f573fSAndroid Build Coastguard Worker //% * @note This class is not meant to be subclassed.
1658*1b3f573fSAndroid Build Coastguard Worker //% **/
1659*1b3f573fSAndroid Build Coastguard Worker //%@interface GPB##NAME##Array : NSObject <NSCopying>
1660*1b3f573fSAndroid Build Coastguard Worker //%
1661*1b3f573fSAndroid Build Coastguard Worker //%/** The number of elements contained in the array. */
1662*1b3f573fSAndroid Build Coastguard Worker //%@property(nonatomic, readonly) NSUInteger count;
1663*1b3f573fSAndroid Build Coastguard Worker //%/** The validation function to check if the enums are valid. */
1664*1b3f573fSAndroid Build Coastguard Worker //%@property(nonatomic, readonly) GPBEnumValidationFunc validationFunc;
1665*1b3f573fSAndroid Build Coastguard Worker //%
1666*1b3f573fSAndroid Build Coastguard Worker //%/**
1667*1b3f573fSAndroid Build Coastguard Worker //% * @return A newly instanced and empty GPB##NAME##Array.
1668*1b3f573fSAndroid Build Coastguard Worker //% **/
1669*1b3f573fSAndroid Build Coastguard Worker //%+ (instancetype)array;
1670*1b3f573fSAndroid Build Coastguard Worker //%
1671*1b3f573fSAndroid Build Coastguard Worker //%/**
1672*1b3f573fSAndroid Build Coastguard Worker //% * Creates and initializes a GPB##NAME##Array with the enum validation function
1673*1b3f573fSAndroid Build Coastguard Worker //% * given.
1674*1b3f573fSAndroid Build Coastguard Worker //% *
1675*1b3f573fSAndroid Build Coastguard Worker //% * @param func The enum validation function for the array.
1676*1b3f573fSAndroid Build Coastguard Worker //% *
1677*1b3f573fSAndroid Build Coastguard Worker //% * @return A newly instanced GPB##NAME##Array.
1678*1b3f573fSAndroid Build Coastguard Worker //% **/
1679*1b3f573fSAndroid Build Coastguard Worker //%+ (instancetype)arrayWithValidationFunction:(nullable GPBEnumValidationFunc)func;
1680*1b3f573fSAndroid Build Coastguard Worker //%
1681*1b3f573fSAndroid Build Coastguard Worker //%/**
1682*1b3f573fSAndroid Build Coastguard Worker //% * Creates and initializes a GPB##NAME##Array with the enum validation function
1683*1b3f573fSAndroid Build Coastguard Worker //% * given and the single raw value given.
1684*1b3f573fSAndroid Build Coastguard Worker //% *
1685*1b3f573fSAndroid Build Coastguard Worker //% * @param func  The enum validation function for the array.
1686*1b3f573fSAndroid Build Coastguard Worker //% * @param value The raw value to add to this array.
1687*1b3f573fSAndroid Build Coastguard Worker //% *
1688*1b3f573fSAndroid Build Coastguard Worker //% * @return A newly instanced GPB##NAME##Array.
1689*1b3f573fSAndroid Build Coastguard Worker //% **/
1690*1b3f573fSAndroid Build Coastguard Worker //%+ (instancetype)arrayWithValidationFunction:(nullable GPBEnumValidationFunc)func
1691*1b3f573fSAndroid Build Coastguard Worker //%                                   rawValue:(TYPE)value;
1692*1b3f573fSAndroid Build Coastguard Worker //%
1693*1b3f573fSAndroid Build Coastguard Worker //%/**
1694*1b3f573fSAndroid Build Coastguard Worker //% * Creates and initializes a GPB##NAME##Array that adds the elements from the
1695*1b3f573fSAndroid Build Coastguard Worker //% * given array.
1696*1b3f573fSAndroid Build Coastguard Worker //% *
1697*1b3f573fSAndroid Build Coastguard Worker //% * @param array Array containing the values to add to the new array.
1698*1b3f573fSAndroid Build Coastguard Worker //% *
1699*1b3f573fSAndroid Build Coastguard Worker //% * @return A newly instanced GPB##NAME##Array.
1700*1b3f573fSAndroid Build Coastguard Worker //% **/
1701*1b3f573fSAndroid Build Coastguard Worker //%+ (instancetype)arrayWithValueArray:(GPB##NAME##Array *)array;
1702*1b3f573fSAndroid Build Coastguard Worker //%
1703*1b3f573fSAndroid Build Coastguard Worker //%/**
1704*1b3f573fSAndroid Build Coastguard Worker //% * Creates and initializes a GPB##NAME##Array with the given enum validation
1705*1b3f573fSAndroid Build Coastguard Worker //% * function and with the givencapacity.
1706*1b3f573fSAndroid Build Coastguard Worker //% *
1707*1b3f573fSAndroid Build Coastguard Worker //% * @param func  The enum validation function for the array.
1708*1b3f573fSAndroid Build Coastguard Worker //% * @param count The capacity needed for the array.
1709*1b3f573fSAndroid Build Coastguard Worker //% *
1710*1b3f573fSAndroid Build Coastguard Worker //% * @return A newly instanced GPB##NAME##Array with a capacity of count.
1711*1b3f573fSAndroid Build Coastguard Worker //% **/
1712*1b3f573fSAndroid Build Coastguard Worker //%+ (instancetype)arrayWithValidationFunction:(nullable GPBEnumValidationFunc)func
1713*1b3f573fSAndroid Build Coastguard Worker //%                                   capacity:(NSUInteger)count;
1714*1b3f573fSAndroid Build Coastguard Worker //%
1715*1b3f573fSAndroid Build Coastguard Worker //%/**
1716*1b3f573fSAndroid Build Coastguard Worker //% * Initializes the array with the given enum validation function.
1717*1b3f573fSAndroid Build Coastguard Worker //% *
1718*1b3f573fSAndroid Build Coastguard Worker //% * @param func The enum validation function for the array.
1719*1b3f573fSAndroid Build Coastguard Worker //% *
1720*1b3f573fSAndroid Build Coastguard Worker //% * @return A newly initialized GPB##NAME##Array with a copy of the values.
1721*1b3f573fSAndroid Build Coastguard Worker //% **/
1722*1b3f573fSAndroid Build Coastguard Worker //%- (instancetype)initWithValidationFunction:(nullable GPBEnumValidationFunc)func
1723*1b3f573fSAndroid Build Coastguard Worker //%    NS_DESIGNATED_INITIALIZER;
1724*1b3f573fSAndroid Build Coastguard Worker //%
1725*1b3f573fSAndroid Build Coastguard Worker //%/**
1726*1b3f573fSAndroid Build Coastguard Worker //% * Initializes the array, copying the given values.
1727*1b3f573fSAndroid Build Coastguard Worker //% *
1728*1b3f573fSAndroid Build Coastguard Worker //% * @param func   The enum validation function for the array.
1729*1b3f573fSAndroid Build Coastguard Worker //% * @param values An array with the values to put inside this array.
1730*1b3f573fSAndroid Build Coastguard Worker //% * @param count  The number of elements to copy into the array.
1731*1b3f573fSAndroid Build Coastguard Worker //% *
1732*1b3f573fSAndroid Build Coastguard Worker //% * @return A newly initialized GPB##NAME##Array with a copy of the values.
1733*1b3f573fSAndroid Build Coastguard Worker //% **/
1734*1b3f573fSAndroid Build Coastguard Worker //%- (instancetype)initWithValidationFunction:(nullable GPBEnumValidationFunc)func
1735*1b3f573fSAndroid Build Coastguard Worker //%                                 rawValues:(const TYPE [__nullable])values
1736*1b3f573fSAndroid Build Coastguard Worker //%                                     count:(NSUInteger)count;
1737*1b3f573fSAndroid Build Coastguard Worker //%
1738*1b3f573fSAndroid Build Coastguard Worker //%/**
1739*1b3f573fSAndroid Build Coastguard Worker //% * Initializes the array, copying the given values.
1740*1b3f573fSAndroid Build Coastguard Worker //% *
1741*1b3f573fSAndroid Build Coastguard Worker //% * @param array An array with the values to put inside this array.
1742*1b3f573fSAndroid Build Coastguard Worker //% *
1743*1b3f573fSAndroid Build Coastguard Worker //% * @return A newly initialized GPB##NAME##Array with a copy of the values.
1744*1b3f573fSAndroid Build Coastguard Worker //% **/
1745*1b3f573fSAndroid Build Coastguard Worker //%- (instancetype)initWithValueArray:(GPB##NAME##Array *)array;
1746*1b3f573fSAndroid Build Coastguard Worker //%
1747*1b3f573fSAndroid Build Coastguard Worker //%/**
1748*1b3f573fSAndroid Build Coastguard Worker //% * Initializes the array with the given capacity.
1749*1b3f573fSAndroid Build Coastguard Worker //% *
1750*1b3f573fSAndroid Build Coastguard Worker //% * @param func  The enum validation function for the array.
1751*1b3f573fSAndroid Build Coastguard Worker //% * @param count The capacity needed for the array.
1752*1b3f573fSAndroid Build Coastguard Worker //% *
1753*1b3f573fSAndroid Build Coastguard Worker //% * @return A newly initialized GPB##NAME##Array with a capacity of count.
1754*1b3f573fSAndroid Build Coastguard Worker //% **/
1755*1b3f573fSAndroid Build Coastguard Worker //%- (instancetype)initWithValidationFunction:(nullable GPBEnumValidationFunc)func
1756*1b3f573fSAndroid Build Coastguard Worker //%                                  capacity:(NSUInteger)count;
1757*1b3f573fSAndroid Build Coastguard Worker //%
1758*1b3f573fSAndroid Build Coastguard Worker //%// These will return kGPBUnrecognizedEnumeratorValue if the value at index is not a
1759*1b3f573fSAndroid Build Coastguard Worker //%// valid enumerator as defined by validationFunc. If the actual value is
1760*1b3f573fSAndroid Build Coastguard Worker //%// desired, use "raw" version of the method.
1761*1b3f573fSAndroid Build Coastguard Worker //%
1762*1b3f573fSAndroid Build Coastguard Worker //%ARRAY_IMMUTABLE_INTERFACE(NAME, TYPE, NAME)
1763*1b3f573fSAndroid Build Coastguard Worker //%
1764*1b3f573fSAndroid Build Coastguard Worker //%// These methods bypass the validationFunc to provide access to values that were not
1765*1b3f573fSAndroid Build Coastguard Worker //%// known at the time the binary was compiled.
1766*1b3f573fSAndroid Build Coastguard Worker //%
1767*1b3f573fSAndroid Build Coastguard Worker //%/**
1768*1b3f573fSAndroid Build Coastguard Worker //% * Gets the raw enum value at the given index.
1769*1b3f573fSAndroid Build Coastguard Worker //% *
1770*1b3f573fSAndroid Build Coastguard Worker //% * @param index The index of the raw enum value to get.
1771*1b3f573fSAndroid Build Coastguard Worker //% *
1772*1b3f573fSAndroid Build Coastguard Worker //% * @return The raw enum value at the given index.
1773*1b3f573fSAndroid Build Coastguard Worker //% **/
1774*1b3f573fSAndroid Build Coastguard Worker //%- (TYPE)rawValueAtIndex:(NSUInteger)index;
1775*1b3f573fSAndroid Build Coastguard Worker //%
1776*1b3f573fSAndroid Build Coastguard Worker //%/**
1777*1b3f573fSAndroid Build Coastguard Worker //% * Enumerates the values on this array with the given block.
1778*1b3f573fSAndroid Build Coastguard Worker //% *
1779*1b3f573fSAndroid Build Coastguard Worker //% * @param block The block to enumerate with.
1780*1b3f573fSAndroid Build Coastguard Worker //% *   **value**: The current value being enumerated.
1781*1b3f573fSAndroid Build Coastguard Worker //% *   **idx**:   The index of the current value.
1782*1b3f573fSAndroid Build Coastguard Worker //% *   **stop**:  A pointer to a boolean that when set stops the enumeration.
1783*1b3f573fSAndroid Build Coastguard Worker //% **/
1784*1b3f573fSAndroid Build Coastguard Worker //%- (void)enumerateRawValuesWithBlock:(void (NS_NOESCAPE ^)(TYPE value, NSUInteger idx, BOOL *stop))block;
1785*1b3f573fSAndroid Build Coastguard Worker //%
1786*1b3f573fSAndroid Build Coastguard Worker //%/**
1787*1b3f573fSAndroid Build Coastguard Worker //% * Enumerates the values on this array with the given block.
1788*1b3f573fSAndroid Build Coastguard Worker //% *
1789*1b3f573fSAndroid Build Coastguard Worker //% * @param opts  Options to control the enumeration.
1790*1b3f573fSAndroid Build Coastguard Worker //% * @param block The block to enumerate with.
1791*1b3f573fSAndroid Build Coastguard Worker //% *   **value**: The current value being enumerated.
1792*1b3f573fSAndroid Build Coastguard Worker //% *   **idx**:   The index of the current value.
1793*1b3f573fSAndroid Build Coastguard Worker //% *   **stop**:  A pointer to a boolean that when set stops the enumeration.
1794*1b3f573fSAndroid Build Coastguard Worker //% **/
1795*1b3f573fSAndroid Build Coastguard Worker //%- (void)enumerateRawValuesWithOptions:(NSEnumerationOptions)opts
1796*1b3f573fSAndroid Build Coastguard Worker //%                           usingBlock:(void (NS_NOESCAPE ^)(TYPE value, NSUInteger idx, BOOL *stop))block;
1797*1b3f573fSAndroid Build Coastguard Worker //%
1798*1b3f573fSAndroid Build Coastguard Worker //%// If value is not a valid enumerator as defined by validationFunc, these
1799*1b3f573fSAndroid Build Coastguard Worker //%// methods will assert in debug, and will log in release and assign the value
1800*1b3f573fSAndroid Build Coastguard Worker //%// to the default value. Use the rawValue methods below to assign non enumerator
1801*1b3f573fSAndroid Build Coastguard Worker //%// values.
1802*1b3f573fSAndroid Build Coastguard Worker //%
1803*1b3f573fSAndroid Build Coastguard Worker //%ARRAY_MUTABLE_INTERFACE(NAME, TYPE, NAME)
1804*1b3f573fSAndroid Build Coastguard Worker //%
1805*1b3f573fSAndroid Build Coastguard Worker //%@end
1806*1b3f573fSAndroid Build Coastguard Worker //%
1807*1b3f573fSAndroid Build Coastguard Worker 
1808*1b3f573fSAndroid Build Coastguard Worker //%PDDM-DEFINE ARRAY_IMMUTABLE_INTERFACE(NAME, TYPE, HELPER_NAME)
1809*1b3f573fSAndroid Build Coastguard Worker //%/**
1810*1b3f573fSAndroid Build Coastguard Worker //% * Gets the value at the given index.
1811*1b3f573fSAndroid Build Coastguard Worker //% *
1812*1b3f573fSAndroid Build Coastguard Worker //% * @param index The index of the value to get.
1813*1b3f573fSAndroid Build Coastguard Worker //% *
1814*1b3f573fSAndroid Build Coastguard Worker //% * @return The value at the given index.
1815*1b3f573fSAndroid Build Coastguard Worker //% **/
1816*1b3f573fSAndroid Build Coastguard Worker //%- (TYPE)valueAtIndex:(NSUInteger)index;
1817*1b3f573fSAndroid Build Coastguard Worker //%
1818*1b3f573fSAndroid Build Coastguard Worker //%/**
1819*1b3f573fSAndroid Build Coastguard Worker //% * Enumerates the values on this array with the given block.
1820*1b3f573fSAndroid Build Coastguard Worker //% *
1821*1b3f573fSAndroid Build Coastguard Worker //% * @param block The block to enumerate with.
1822*1b3f573fSAndroid Build Coastguard Worker //% *   **value**: The current value being enumerated.
1823*1b3f573fSAndroid Build Coastguard Worker //% *   **idx**:   The index of the current value.
1824*1b3f573fSAndroid Build Coastguard Worker //% *   **stop**:  A pointer to a boolean that when set stops the enumeration.
1825*1b3f573fSAndroid Build Coastguard Worker //% **/
1826*1b3f573fSAndroid Build Coastguard Worker //%- (void)enumerateValuesWithBlock:(void (NS_NOESCAPE ^)(TYPE value, NSUInteger idx, BOOL *stop))block;
1827*1b3f573fSAndroid Build Coastguard Worker //%
1828*1b3f573fSAndroid Build Coastguard Worker //%/**
1829*1b3f573fSAndroid Build Coastguard Worker //% * Enumerates the values on this array with the given block.
1830*1b3f573fSAndroid Build Coastguard Worker //% *
1831*1b3f573fSAndroid Build Coastguard Worker //% * @param opts  Options to control the enumeration.
1832*1b3f573fSAndroid Build Coastguard Worker //% * @param block The block to enumerate with.
1833*1b3f573fSAndroid Build Coastguard Worker //% *   **value**: The current value being enumerated.
1834*1b3f573fSAndroid Build Coastguard Worker //% *   **idx**:   The index of the current value.
1835*1b3f573fSAndroid Build Coastguard Worker //% *   **stop**:  A pointer to a boolean that when set stops the enumeration.
1836*1b3f573fSAndroid Build Coastguard Worker //% **/
1837*1b3f573fSAndroid Build Coastguard Worker //%- (void)enumerateValuesWithOptions:(NSEnumerationOptions)opts
1838*1b3f573fSAndroid Build Coastguard Worker //%                        usingBlock:(void (NS_NOESCAPE ^)(TYPE value, NSUInteger idx, BOOL *stop))block;
1839*1b3f573fSAndroid Build Coastguard Worker 
1840*1b3f573fSAndroid Build Coastguard Worker //%PDDM-DEFINE ARRAY_MUTABLE_INTERFACE(NAME, TYPE, HELPER_NAME)
1841*1b3f573fSAndroid Build Coastguard Worker //%/**
1842*1b3f573fSAndroid Build Coastguard Worker //% * Adds a value to this array.
1843*1b3f573fSAndroid Build Coastguard Worker //% *
1844*1b3f573fSAndroid Build Coastguard Worker //% * @param value The value to add to this array.
1845*1b3f573fSAndroid Build Coastguard Worker //% **/
1846*1b3f573fSAndroid Build Coastguard Worker //%- (void)addValue:(TYPE)value;
1847*1b3f573fSAndroid Build Coastguard Worker //%
1848*1b3f573fSAndroid Build Coastguard Worker //%/**
1849*1b3f573fSAndroid Build Coastguard Worker //% * Adds values to this array.
1850*1b3f573fSAndroid Build Coastguard Worker //% *
1851*1b3f573fSAndroid Build Coastguard Worker //% * @param values The values to add to this array.
1852*1b3f573fSAndroid Build Coastguard Worker //% * @param count  The number of elements to add.
1853*1b3f573fSAndroid Build Coastguard Worker //% **/
1854*1b3f573fSAndroid Build Coastguard Worker //%- (void)addValues:(const TYPE [__nullable])values count:(NSUInteger)count;
1855*1b3f573fSAndroid Build Coastguard Worker //%
1856*1b3f573fSAndroid Build Coastguard Worker //%ARRAY_EXTRA_MUTABLE_METHODS1_##HELPER_NAME(NAME, TYPE)
1857*1b3f573fSAndroid Build Coastguard Worker //%/**
1858*1b3f573fSAndroid Build Coastguard Worker //% * Inserts a value into the given position.
1859*1b3f573fSAndroid Build Coastguard Worker //% *
1860*1b3f573fSAndroid Build Coastguard Worker //% * @param value The value to add to this array.
1861*1b3f573fSAndroid Build Coastguard Worker //% * @param index The index into which to insert the value.
1862*1b3f573fSAndroid Build Coastguard Worker //% **/
1863*1b3f573fSAndroid Build Coastguard Worker //%- (void)insertValue:(TYPE)value atIndex:(NSUInteger)index;
1864*1b3f573fSAndroid Build Coastguard Worker //%
1865*1b3f573fSAndroid Build Coastguard Worker //%/**
1866*1b3f573fSAndroid Build Coastguard Worker //% * Replaces the value at the given index with the given value.
1867*1b3f573fSAndroid Build Coastguard Worker //% *
1868*1b3f573fSAndroid Build Coastguard Worker //% * @param index The index for which to replace the value.
1869*1b3f573fSAndroid Build Coastguard Worker //% * @param value The value to replace with.
1870*1b3f573fSAndroid Build Coastguard Worker //% **/
1871*1b3f573fSAndroid Build Coastguard Worker //%- (void)replaceValueAtIndex:(NSUInteger)index withValue:(TYPE)value;
1872*1b3f573fSAndroid Build Coastguard Worker //%ARRAY_EXTRA_MUTABLE_METHODS2_##HELPER_NAME(NAME, TYPE)
1873*1b3f573fSAndroid Build Coastguard Worker //%/**
1874*1b3f573fSAndroid Build Coastguard Worker //% * Removes the value at the given index.
1875*1b3f573fSAndroid Build Coastguard Worker //% *
1876*1b3f573fSAndroid Build Coastguard Worker //% * @param index The index of the value to remove.
1877*1b3f573fSAndroid Build Coastguard Worker //% **/
1878*1b3f573fSAndroid Build Coastguard Worker //%- (void)removeValueAtIndex:(NSUInteger)index;
1879*1b3f573fSAndroid Build Coastguard Worker //%
1880*1b3f573fSAndroid Build Coastguard Worker //%/**
1881*1b3f573fSAndroid Build Coastguard Worker //% * Removes all the values from this array.
1882*1b3f573fSAndroid Build Coastguard Worker //% **/
1883*1b3f573fSAndroid Build Coastguard Worker //%- (void)removeAll;
1884*1b3f573fSAndroid Build Coastguard Worker //%
1885*1b3f573fSAndroid Build Coastguard Worker //%/**
1886*1b3f573fSAndroid Build Coastguard Worker //% * Exchanges the values between the given indexes.
1887*1b3f573fSAndroid Build Coastguard Worker //% *
1888*1b3f573fSAndroid Build Coastguard Worker //% * @param idx1 The index of the first element to exchange.
1889*1b3f573fSAndroid Build Coastguard Worker //% * @param idx2 The index of the second element to exchange.
1890*1b3f573fSAndroid Build Coastguard Worker //% **/
1891*1b3f573fSAndroid Build Coastguard Worker //%- (void)exchangeValueAtIndex:(NSUInteger)idx1
1892*1b3f573fSAndroid Build Coastguard Worker //%            withValueAtIndex:(NSUInteger)idx2;
1893*1b3f573fSAndroid Build Coastguard Worker 
1894*1b3f573fSAndroid Build Coastguard Worker //
1895*1b3f573fSAndroid Build Coastguard Worker // These are hooks invoked by the above to do insert as needed.
1896*1b3f573fSAndroid Build Coastguard Worker //
1897*1b3f573fSAndroid Build Coastguard Worker 
1898*1b3f573fSAndroid Build Coastguard Worker //%PDDM-DEFINE ARRAY_EXTRA_MUTABLE_METHODS1_Basic(NAME, TYPE)
1899*1b3f573fSAndroid Build Coastguard Worker //%/**
1900*1b3f573fSAndroid Build Coastguard Worker //% * Adds the values from the given array to this array.
1901*1b3f573fSAndroid Build Coastguard Worker //% *
1902*1b3f573fSAndroid Build Coastguard Worker //% * @param array The array containing the elements to add to this array.
1903*1b3f573fSAndroid Build Coastguard Worker //% **/
1904*1b3f573fSAndroid Build Coastguard Worker //%- (void)addValuesFromArray:(GPB##NAME##Array *)array;
1905*1b3f573fSAndroid Build Coastguard Worker //%
1906*1b3f573fSAndroid Build Coastguard Worker //%PDDM-DEFINE ARRAY_EXTRA_MUTABLE_METHODS2_Basic(NAME, TYPE)
1907*1b3f573fSAndroid Build Coastguard Worker // Empty
1908*1b3f573fSAndroid Build Coastguard Worker //%PDDM-DEFINE ARRAY_EXTRA_MUTABLE_METHODS1_Enum(NAME, TYPE)
1909*1b3f573fSAndroid Build Coastguard Worker // Empty
1910*1b3f573fSAndroid Build Coastguard Worker //%PDDM-DEFINE ARRAY_EXTRA_MUTABLE_METHODS2_Enum(NAME, TYPE)
1911*1b3f573fSAndroid Build Coastguard Worker //%
1912*1b3f573fSAndroid Build Coastguard Worker //%// These methods bypass the validationFunc to provide setting of values that were not
1913*1b3f573fSAndroid Build Coastguard Worker //%// known at the time the binary was compiled.
1914*1b3f573fSAndroid Build Coastguard Worker //%
1915*1b3f573fSAndroid Build Coastguard Worker //%/**
1916*1b3f573fSAndroid Build Coastguard Worker //% * Adds a raw enum value to this array.
1917*1b3f573fSAndroid Build Coastguard Worker //% *
1918*1b3f573fSAndroid Build Coastguard Worker //% * @note This method bypass the validationFunc to enable the setting of values that
1919*1b3f573fSAndroid Build Coastguard Worker //% *       were not known at the time the binary was compiled.
1920*1b3f573fSAndroid Build Coastguard Worker //% *
1921*1b3f573fSAndroid Build Coastguard Worker //% * @param value The raw enum value to add to the array.
1922*1b3f573fSAndroid Build Coastguard Worker //% **/
1923*1b3f573fSAndroid Build Coastguard Worker //%- (void)addRawValue:(TYPE)value;
1924*1b3f573fSAndroid Build Coastguard Worker //%
1925*1b3f573fSAndroid Build Coastguard Worker //%/**
1926*1b3f573fSAndroid Build Coastguard Worker //% * Adds raw enum values to this array.
1927*1b3f573fSAndroid Build Coastguard Worker //% *
1928*1b3f573fSAndroid Build Coastguard Worker //% * @note This method bypass the validationFunc to enable the setting of values that
1929*1b3f573fSAndroid Build Coastguard Worker //% *       were not known at the time the binary was compiled.
1930*1b3f573fSAndroid Build Coastguard Worker //% *
1931*1b3f573fSAndroid Build Coastguard Worker //% * @param array Array containing the raw enum values to add to this array.
1932*1b3f573fSAndroid Build Coastguard Worker //% **/
1933*1b3f573fSAndroid Build Coastguard Worker //%- (void)addRawValuesFromArray:(GPB##NAME##Array *)array;
1934*1b3f573fSAndroid Build Coastguard Worker //%
1935*1b3f573fSAndroid Build Coastguard Worker //%/**
1936*1b3f573fSAndroid Build Coastguard Worker //% * Adds raw enum values to this array.
1937*1b3f573fSAndroid Build Coastguard Worker //% *
1938*1b3f573fSAndroid Build Coastguard Worker //% * @note This method bypass the validationFunc to enable the setting of values that
1939*1b3f573fSAndroid Build Coastguard Worker //% *       were not known at the time the binary was compiled.
1940*1b3f573fSAndroid Build Coastguard Worker //% *
1941*1b3f573fSAndroid Build Coastguard Worker //% * @param values Array containing the raw enum values to add to this array.
1942*1b3f573fSAndroid Build Coastguard Worker //% * @param count  The number of raw values to add.
1943*1b3f573fSAndroid Build Coastguard Worker //% **/
1944*1b3f573fSAndroid Build Coastguard Worker //%- (void)addRawValues:(const TYPE [__nullable])values count:(NSUInteger)count;
1945*1b3f573fSAndroid Build Coastguard Worker //%
1946*1b3f573fSAndroid Build Coastguard Worker //%/**
1947*1b3f573fSAndroid Build Coastguard Worker //% * Inserts a raw enum value at the given index.
1948*1b3f573fSAndroid Build Coastguard Worker //% *
1949*1b3f573fSAndroid Build Coastguard Worker //% * @note This method bypass the validationFunc to enable the setting of values that
1950*1b3f573fSAndroid Build Coastguard Worker //% *       were not known at the time the binary was compiled.
1951*1b3f573fSAndroid Build Coastguard Worker //% *
1952*1b3f573fSAndroid Build Coastguard Worker //% * @param value Raw enum value to add.
1953*1b3f573fSAndroid Build Coastguard Worker //% * @param index The index into which to insert the value.
1954*1b3f573fSAndroid Build Coastguard Worker //% **/
1955*1b3f573fSAndroid Build Coastguard Worker //%- (void)insertRawValue:(TYPE)value atIndex:(NSUInteger)index;
1956*1b3f573fSAndroid Build Coastguard Worker //%
1957*1b3f573fSAndroid Build Coastguard Worker //%/**
1958*1b3f573fSAndroid Build Coastguard Worker //% * Replaces the raw enum value at the given index with the given value.
1959*1b3f573fSAndroid Build Coastguard Worker //% *
1960*1b3f573fSAndroid Build Coastguard Worker //% * @note This method bypass the validationFunc to enable the setting of values that
1961*1b3f573fSAndroid Build Coastguard Worker //% *       were not known at the time the binary was compiled.
1962*1b3f573fSAndroid Build Coastguard Worker //% *
1963*1b3f573fSAndroid Build Coastguard Worker //% * @param index The index for which to replace the value.
1964*1b3f573fSAndroid Build Coastguard Worker //% * @param value The raw enum value to replace with.
1965*1b3f573fSAndroid Build Coastguard Worker //% **/
1966*1b3f573fSAndroid Build Coastguard Worker //%- (void)replaceValueAtIndex:(NSUInteger)index withRawValue:(TYPE)value;
1967*1b3f573fSAndroid Build Coastguard Worker //%
1968*1b3f573fSAndroid Build Coastguard Worker //%// No validation applies to these methods.
1969*1b3f573fSAndroid Build Coastguard Worker //%
1970