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