Lines Matching refs:array

54     heim_array_t array = ptr;  in array_dealloc()  local
56 for (n = 0; n < array->len; n++) in array_dealloc()
57 heim_release(array->val[n]); in array_dealloc()
58 free(array->allocated); in array_dealloc()
81 heim_array_t array; in heim_array_create() local
83 array = _heim_alloc_object(&array_object, sizeof(*array)); in heim_array_create()
84 if (array == NULL) in heim_array_create()
87 array->allocated = NULL; in heim_array_create()
88 array->allocated_len = 0; in heim_array_create()
89 array->val = NULL; in heim_array_create()
90 array->len = 0; in heim_array_create()
92 return array; in heim_array_create()
117 heim_array_append_value(heim_array_t array, heim_object_t object) in heim_array_append_value() argument
120 size_t leading = array->val - array->allocated; /* unused leading slots */ in heim_array_append_value()
121 size_t trailing = array->allocated_len - array->len - leading; in heim_array_append_value()
126 array->val[array->len++] = heim_retain(object); in heim_array_append_value()
130 if (leading > (array->len + 1)) { in heim_array_append_value()
135 (void) memmove(&array->allocated[0], &array->val[0], in heim_array_append_value()
136 array->len * sizeof(array->val[0])); in heim_array_append_value()
137 array->val = array->allocated; in heim_array_append_value()
140 array->val[array->len++] = heim_retain(object); in heim_array_append_value()
145 new_len = leading + array->len + 1 + (array->len >> 1); in heim_array_append_value()
146 ptr = realloc(array->allocated, new_len * sizeof(array->val[0])); in heim_array_append_value()
149 array->allocated = ptr; in heim_array_append_value()
150 array->allocated_len = new_len; in heim_array_append_value()
151 array->val = &ptr[leading]; in heim_array_append_value()
152 array->val[array->len++] = heim_retain(object); in heim_array_append_value()
163 heim_array_prepend_value(heim_array_t array, heim_object_t object) in heim_array_prepend_value() argument
166 size_t leading = array->val - array->allocated; /* unused leading slots */ in heim_array_prepend_value()
167 size_t trailing = array->allocated_len - array->len - leading; in heim_array_prepend_value()
172 array->val--; in heim_array_prepend_value()
173 array->val[0] = heim_retain(object); in heim_array_prepend_value()
174 array->len++; in heim_array_prepend_value()
177 if (trailing > (array->len + 1)) { in heim_array_prepend_value()
183 (void) memmove(&array->allocated[array->len], &array->val[0], in heim_array_prepend_value()
184 array->len * sizeof(array->val[0])); in heim_array_prepend_value()
185 array->val = &array->allocated[array->len]; in heim_array_prepend_value()
188 array->val--; in heim_array_prepend_value()
189 array->val[0] = heim_retain(object); in heim_array_prepend_value()
190 array->len++; in heim_array_prepend_value()
194 new_len = array->len + 1 + trailing + (array->len >> 1); in heim_array_prepend_value()
195 ptr = realloc(array->allocated, new_len * sizeof(array->val[0])); in heim_array_prepend_value()
198 (void) memmove(&ptr[1], &ptr[0], array->len * sizeof (array->val[0])); in heim_array_prepend_value()
199 array->allocated = ptr; in heim_array_prepend_value()
200 array->allocated_len = new_len; in heim_array_prepend_value()
201 array->val = &ptr[0]; in heim_array_prepend_value()
202 array->val[0] = heim_retain(object); in heim_array_prepend_value()
203 array->len++; in heim_array_prepend_value()
219 heim_array_insert_value(heim_array_t array, size_t idx, heim_object_t object) in heim_array_insert_value() argument
224 return heim_array_prepend_value(array, object); in heim_array_insert_value()
225 else if (idx > array->len) in heim_array_insert_value()
234 ret = heim_array_append_value(array, object); in heim_array_insert_value()
235 if (ret != 0 || idx == (array->len - 1)) in heim_array_insert_value()
241 (void) memmove(&array->val[idx + 1], &array->val[idx], in heim_array_insert_value()
242 (array->len - idx - 1) * sizeof(array->val[0])); in heim_array_insert_value()
243 array->val[idx] = heim_retain(object); in heim_array_insert_value()
257 heim_array_iterate_f(heim_array_t array, void *ctx, heim_array_iterator_f_t fn) in heim_array_iterate_f() argument
261 for (n = 0; n < array->len; n++) { in heim_array_iterate_f()
262 fn(array->val[n], ctx, &stop); in heim_array_iterate_f()
277 heim_array_iterate(heim_array_t array, void (^fn)(heim_object_t, int *))
281 for (n = 0; n < array->len; n++) {
282 fn(array->val[n], &stop);
298 heim_array_iterate_reverse_f(heim_array_t array, void *ctx, heim_array_iterator_f_t fn) in heim_array_iterate_reverse_f() argument
303 for (n = array->len; n > 0; n--) { in heim_array_iterate_reverse_f()
304 fn(array->val[n - 1], ctx, &stop); in heim_array_iterate_reverse_f()
319 heim_array_iterate_reverse(heim_array_t array, void (^fn)(heim_object_t, int *))
323 for (n = array->len; n > 0; n--) {
324 fn(array->val[n - 1], &stop);
340 heim_array_get_length(heim_array_t array) in heim_array_get_length() argument
342 return array->len; in heim_array_get_length()
356 heim_array_get_value(heim_array_t array, size_t idx) in heim_array_get_value() argument
358 if (idx >= array->len) in heim_array_get_value()
360 return array->val[idx]; in heim_array_get_value()
374 heim_array_copy_value(heim_array_t array, size_t idx) in heim_array_copy_value() argument
376 if (idx >= array->len) in heim_array_copy_value()
378 return heim_retain(array->val[idx]); in heim_array_copy_value()
392 heim_array_set_value(heim_array_t array, size_t idx, heim_object_t value) in heim_array_set_value() argument
394 if (idx >= array->len) in heim_array_set_value()
396 heim_release(array->val[idx]); in heim_array_set_value()
397 array->val[idx] = heim_retain(value); in heim_array_set_value()
408 heim_array_delete_value(heim_array_t array, size_t idx) in heim_array_delete_value() argument
411 if (idx >= array->len) in heim_array_delete_value()
413 obj = array->val[idx]; in heim_array_delete_value()
415 array->len--; in heim_array_delete_value()
428 array->val++; in heim_array_delete_value()
429 else if (idx < array->len) in heim_array_delete_value()
430 (void) memmove(&array->val[idx], &array->val[idx + 1], in heim_array_delete_value()
431 (array->len - idx) * sizeof(array->val[0])); in heim_array_delete_value()
444 heim_array_filter_f(heim_array_t array, void *ctx, heim_array_filter_f_t fn) in heim_array_filter_f() argument
448 while (n < array->len) { in heim_array_filter_f()
449 if (fn(array->val[n], ctx)) { in heim_array_filter_f()
450 heim_array_delete_value(array, n); in heim_array_filter_f()
467 heim_array_filter(heim_array_t array, int (^block)(heim_object_t))
471 while (n < array->len) {
472 if (block(array->val[n])) {
473 heim_array_delete_value(array, n);