Lines Matching refs:array

46 	struct dba_array	*array;  in dba_array_new()  local
49 array = mandoc_malloc(sizeof(*array)); in dba_array_new()
50 array->ep = mandoc_reallocarray(NULL, ea, sizeof(*array->ep)); in dba_array_new()
51 array->em = mandoc_reallocarray(NULL, ea, sizeof(*array->em)); in dba_array_new()
52 array->ea = ea; in dba_array_new()
53 array->eu = 0; in dba_array_new()
54 array->ed = 0; in dba_array_new()
55 array->ec = 0; in dba_array_new()
56 array->flags = flags; in dba_array_new()
57 array->pos = 0; in dba_array_new()
58 return array; in dba_array_new()
62 dba_array_free(struct dba_array *array) in dba_array_free() argument
66 if (array == NULL) in dba_array_free()
68 if (array->flags & DBA_STR) in dba_array_free()
69 for (ie = 0; ie < array->eu; ie++) in dba_array_free()
70 free(array->ep[ie]); in dba_array_free()
71 free(array->ep); in dba_array_free()
72 free(array->em); in dba_array_free()
73 free(array); in dba_array_free()
77 dba_array_set(struct dba_array *array, int32_t ie, void *entry) in dba_array_set() argument
80 assert(ie < array->ea); in dba_array_set()
81 assert(ie <= array->eu); in dba_array_set()
82 if (ie == array->eu) in dba_array_set()
83 array->eu++; in dba_array_set()
84 if (array->flags & DBA_STR) in dba_array_set()
86 array->ep[ie] = entry; in dba_array_set()
87 array->em[ie] = 0; in dba_array_set()
91 dba_array_add(struct dba_array *array, void *entry) in dba_array_add() argument
93 if (array->eu == array->ea) { in dba_array_add()
94 assert(array->flags & DBA_GROW); in dba_array_add()
95 array->ep = mandoc_reallocarray(array->ep, in dba_array_add()
96 2, sizeof(*array->ep) * array->ea); in dba_array_add()
97 array->em = mandoc_reallocarray(array->em, in dba_array_add()
98 2, sizeof(*array->em) * array->ea); in dba_array_add()
99 array->ea *= 2; in dba_array_add()
101 dba_array_set(array, array->eu, entry); in dba_array_add()
105 dba_array_get(struct dba_array *array, int32_t ie) in dba_array_get() argument
107 if (ie < 0 || ie >= array->eu || array->em[ie] == -1) in dba_array_get()
109 return array->ep[ie]; in dba_array_get()
113 dba_array_start(struct dba_array *array) in dba_array_start() argument
115 array->ec = array->eu; in dba_array_start()
119 dba_array_next(struct dba_array *array) in dba_array_next() argument
121 if (array->ec < array->eu) in dba_array_next()
122 array->ec++; in dba_array_next()
124 array->ec = 0; in dba_array_next()
125 while (array->ec < array->eu && array->em[array->ec] == -1) in dba_array_next()
126 array->ec++; in dba_array_next()
127 return array->ec < array->eu ? array->ep[array->ec] : NULL; in dba_array_next()
131 dba_array_del(struct dba_array *array) in dba_array_del() argument
133 if (array->ec < array->eu && array->em[array->ec] != -1) { in dba_array_del()
134 array->em[array->ec] = -1; in dba_array_del()
135 array->ed++; in dba_array_del()
140 dba_array_undel(struct dba_array *array) in dba_array_undel() argument
142 memset(array->em, 0, sizeof(*array->em) * array->eu); in dba_array_undel()
146 dba_array_setpos(struct dba_array *array, int32_t ie, int32_t pos) in dba_array_setpos() argument
148 array->em[ie] = pos; in dba_array_setpos()
152 dba_array_getpos(struct dba_array *array) in dba_array_getpos() argument
154 return array->pos; in dba_array_getpos()
158 dba_array_sort(struct dba_array *array, dba_compare_func func) in dba_array_sort() argument
160 assert(array->ed == 0); in dba_array_sort()
161 qsort(array->ep, array->eu, sizeof(*array->ep), func); in dba_array_sort()
165 dba_array_writelen(struct dba_array *array, int32_t nmemb) in dba_array_writelen() argument
167 dba_int_write(array->eu - array->ed); in dba_array_writelen()
168 return dba_skip(nmemb, array->eu - array->ed); in dba_array_writelen()
172 dba_array_writepos(struct dba_array *array) in dba_array_writepos() argument
176 array->pos = dba_tell(); in dba_array_writepos()
177 for (ie = 0; ie < array->eu; ie++) in dba_array_writepos()
178 if (array->em[ie] != -1) in dba_array_writepos()
179 dba_int_write(array->em[ie]); in dba_array_writepos()
183 dba_array_writelst(struct dba_array *array) in dba_array_writelst() argument
187 dba_array_FOREACH(array, str) in dba_array_writelst()