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