Lines Matching +full:- +full:eu

17  * Allocation-based arrays for the mandoc database, for read-write access.
34 int32_t eu; /* Entries used (including deleted). */ member
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()
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()
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()
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()
105 if (ie < 0 || ie >= array->eu || array->em[ie] == -1) in dba_array_get()
107 return array->ep[ie]; in dba_array_get()
113 array->ec = array->eu; in dba_array_start()
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()
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()
140 memset(array->em, 0, sizeof(*array->em) * array->eu); in dba_array_undel()
146 array->em[ie] = pos; in dba_array_setpos()
152 return array->pos; in dba_array_getpos()
158 assert(array->ed == 0); in dba_array_sort()
159 qsort(array->ep, array->eu, sizeof(*array->ep), func); in dba_array_sort()
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()
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()