1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- /*
- * Copyright 2014 ZXing authors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
- #import "ZXIntArray.h"
-
- @implementation ZXIntArray
-
- - (id)initWithLength:(unsigned int)length {
- if (self = [super init]) {
- if (length > 0) {
- _array = (int32_t *)calloc(length, sizeof(int32_t));
- } else {
- _array = NULL;
- }
- _length = length;
- }
-
- return self;
- }
-
- - (id)initWithInts:(int32_t)int1, ... {
- va_list args;
- va_start(args, int1);
- unsigned int length = 0;
- for (int32_t i = int1; i != -1; i = va_arg(args, int)) {
- length++;
- }
- va_end(args);
-
- if ((self = [self initWithLength:length]) && (length > 0)) {
- va_list args;
- va_start(args, int1);
- int i = 0;
- for (int32_t c = int1; c != -1; c = va_arg(args, int)) {
- _array[i++] = c;
- }
- va_end(args);
- }
-
- return self;
- }
-
- - (id)copyWithZone:(NSZone *)zone {
- ZXIntArray *copy = [[ZXIntArray allocWithZone:zone] initWithLength:self.length];
- memcpy(copy.array, self.array, self.length * sizeof(int32_t));
- return copy;
- }
-
- - (void)dealloc {
- if (_array) {
- free(_array);
- }
- }
-
- - (void)clear {
- memset(self.array, 0, self.length * sizeof(int32_t));
- }
-
- - (int)sum {
- int sum = 0;
- int32_t *array = self.array;
- for (int i = 0; i < self.length; i++) {
- sum += array[i];
- }
- return sum;
- }
-
- - (NSString *)description {
- NSMutableString *s = [NSMutableString stringWithFormat:@"length=%u, array=(", self.length];
-
- for (int i = 0; i < self.length; i++) {
- [s appendFormat:@"%d", self.array[i]];
- if (i < self.length - 1) {
- [s appendString:@", "];
- }
- }
-
- [s appendString:@")"];
- return s;
- }
-
- @end
|