Lines Matching refs:array
29 flexarray_t *array; in flexarray_make() local
31 GCNEW(array); in flexarray_make()
32 array->size = size; in flexarray_make()
33 array->autogrow = autogrow; in flexarray_make()
34 array->count = 0; in flexarray_make()
35 array->gc = gc; in flexarray_make()
36 GCNEW_ARRAY(array->data, size); in flexarray_make()
38 return array; in flexarray_make()
41 void flexarray_free(flexarray_t *array) in flexarray_free() argument
43 assert(!libxl__gc_is_real(array->gc)); in flexarray_free()
44 free(array->data); in flexarray_free()
45 free(array); in flexarray_free()
48 void flexarray_grow(flexarray_t *array, int extents) in flexarray_grow() argument
51 libxl__gc *gc = array->gc; in flexarray_grow()
53 newsize = array->size + extents; in flexarray_grow()
54 GCREALLOC_ARRAY(array->data, newsize); in flexarray_grow()
55 array->size += extents; in flexarray_grow()
58 int flexarray_set(flexarray_t *array, unsigned int idx, void *ptr) in flexarray_set() argument
60 if (idx >= array->size) { in flexarray_set()
62 if (!array->autogrow) in flexarray_set()
64 newsize = (array->size * 2 < idx) ? idx + 1 : array->size * 2; in flexarray_set()
65 flexarray_grow(array, newsize - array->size); in flexarray_set()
67 if ( idx + 1 > array->count ) in flexarray_set()
68 array->count = idx + 1; in flexarray_set()
69 array->data[idx] = ptr; in flexarray_set()
73 int flexarray_append(flexarray_t *array, void *ptr) in flexarray_append() argument
75 return flexarray_set(array, array->count, ptr); in flexarray_append()
78 int flexarray_append_pair(flexarray_t *array, void *ptr1, void *ptr2) in flexarray_append_pair() argument
80 int rc = flexarray_append(array, ptr1); in flexarray_append_pair()
82 rc = flexarray_append(array, ptr2); in flexarray_append_pair()
86 int flexarray_vappend(flexarray_t *array, ...) in flexarray_vappend() argument
92 va_start(va, array); in flexarray_vappend()
94 if ( flexarray_append(array, ptr) ) in flexarray_vappend()
101 int flexarray_get(flexarray_t *array, int idx, void **ptr) in flexarray_get() argument
103 if (idx >= array->size) in flexarray_get()
105 *ptr = array->data[idx]; in flexarray_get()
109 void **flexarray_contents(flexarray_t *array) in flexarray_contents() argument
112 data = array->data; in flexarray_contents()
113 if (!libxl__gc_is_real(array->gc)) in flexarray_contents()
114 free(array); in flexarray_contents()