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