Lines Matching refs:array

44 	struct dba_array	*array;  in dba_array_new()  local
47 array = mandoc_malloc(sizeof(*array)); in dba_array_new()
48 array->ep = mandoc_reallocarray(NULL, ea, sizeof(*array->ep)); in dba_array_new()
49 array->em = mandoc_reallocarray(NULL, ea, sizeof(*array->em)); in dba_array_new()
50 array->ea = ea; in dba_array_new()
51 array->eu = 0; in dba_array_new()
52 array->ed = 0; in dba_array_new()
53 array->ec = 0; in dba_array_new()
54 array->flags = flags; in dba_array_new()
55 array->pos = 0; in dba_array_new()
56 return array; in dba_array_new()
60 dba_array_free(struct dba_array *array) in dba_array_free() argument
64 if (array == NULL) in dba_array_free()
66 if (array->flags & DBA_STR) in dba_array_free()
67 for (ie = 0; ie < array->eu; ie++) in dba_array_free()
68 free(array->ep[ie]); in dba_array_free()
69 free(array->ep); in dba_array_free()
70 free(array->em); in dba_array_free()
71 free(array); in dba_array_free()
75 dba_array_set(struct dba_array *array, int32_t ie, void *entry) in dba_array_set() argument
78 assert(ie < array->ea); in dba_array_set()
79 assert(ie <= array->eu); in dba_array_set()
80 if (ie == array->eu) in dba_array_set()
81 array->eu++; in dba_array_set()
82 if (array->flags & DBA_STR) in dba_array_set()
84 array->ep[ie] = entry; in dba_array_set()
85 array->em[ie] = 0; in dba_array_set()
89 dba_array_add(struct dba_array *array, void *entry) in dba_array_add() argument
91 if (array->eu == array->ea) { in dba_array_add()
92 assert(array->flags & DBA_GROW); in dba_array_add()
93 array->ep = mandoc_reallocarray(array->ep, in dba_array_add()
94 2, sizeof(*array->ep) * array->ea); in dba_array_add()
95 array->em = mandoc_reallocarray(array->em, in dba_array_add()
96 2, sizeof(*array->em) * array->ea); in dba_array_add()
97 array->ea *= 2; in dba_array_add()
99 dba_array_set(array, array->eu, entry); in dba_array_add()
103 dba_array_get(struct dba_array *array, int32_t ie) in dba_array_get() argument
105 if (ie < 0 || ie >= array->eu || array->em[ie] == -1) in dba_array_get()
107 return array->ep[ie]; in dba_array_get()
111 dba_array_start(struct dba_array *array) in dba_array_start() argument
113 array->ec = array->eu; in dba_array_start()
117 dba_array_next(struct dba_array *array) in dba_array_next() argument
119 if (array->ec < array->eu) in dba_array_next()
120 array->ec++; in dba_array_next()
122 array->ec = 0; in dba_array_next()
123 while (array->ec < array->eu && array->em[array->ec] == -1) in dba_array_next()
124 array->ec++; in dba_array_next()
125 return array->ec < array->eu ? array->ep[array->ec] : NULL; in dba_array_next()
129 dba_array_del(struct dba_array *array) in dba_array_del() argument
131 if (array->ec < array->eu && array->em[array->ec] != -1) { in dba_array_del()
132 array->em[array->ec] = -1; in dba_array_del()
133 array->ed++; in dba_array_del()
138 dba_array_undel(struct dba_array *array) in dba_array_undel() argument
140 memset(array->em, 0, sizeof(*array->em) * array->eu); in dba_array_undel()
144 dba_array_setpos(struct dba_array *array, int32_t ie, int32_t pos) in dba_array_setpos() argument
146 array->em[ie] = pos; in dba_array_setpos()
150 dba_array_getpos(struct dba_array *array) in dba_array_getpos() argument
152 return array->pos; in dba_array_getpos()
156 dba_array_sort(struct dba_array *array, dba_compare_func func) in dba_array_sort() argument
158 assert(array->ed == 0); in dba_array_sort()
159 qsort(array->ep, array->eu, sizeof(*array->ep), func); in dba_array_sort()
163 dba_array_writelen(struct dba_array *array, int32_t nmemb) in dba_array_writelen() argument
165 dba_int_write(array->eu - array->ed); in dba_array_writelen()
166 return dba_skip(nmemb, array->eu - array->ed); in dba_array_writelen()
170 dba_array_writepos(struct dba_array *array) in dba_array_writepos() argument
174 array->pos = dba_tell(); in dba_array_writepos()
175 for (ie = 0; ie < array->eu; ie++) in dba_array_writepos()
176 if (array->em[ie] != -1) in dba_array_writepos()
177 dba_int_write(array->em[ie]); in dba_array_writepos()
181 dba_array_writelst(struct dba_array *array) in dba_array_writelst() argument
185 dba_array_FOREACH(array, str) in dba_array_writelst()