Lines Matching refs:up

26 OVstatus OVOneToAny_Init(OVOneToAny * up, OVHeap * heap)  in OVOneToAny_Init()  argument
28 ov_utility_zero_range(up, up + 1); in OVOneToAny_Init()
29 up->heap = heap; in OVOneToAny_Init()
35 OVOneToAny *up; in OVOneToAny_New() local
36 up = OVHeap_ALLOC(heap, OVOneToAny); in OVOneToAny_New()
37 up->heap = heap; in OVOneToAny_New()
38 return up; in OVOneToAny_New()
41 void OVOneToAny_Purge(OVOneToAny * up) in OVOneToAny_Purge() argument
43 if(up) { in OVOneToAny_Purge()
44 OVHeapArray_FREE_AUTO_NULL(up->elem); in OVOneToAny_Purge()
45 OVHeap_FREE_AUTO_NULL(up->heap, up->forward); in OVOneToAny_Purge()
49 void OVOneToAny_Del(OVOneToAny * up) in OVOneToAny_Del() argument
51 if(up) { in OVOneToAny_Del()
52 OVOneToAny_Purge(up); in OVOneToAny_Del()
53 OVHeap_FREE_AUTO_NULL(up->heap, up); in OVOneToAny_Del()
57 void OVOneToAny_Reset(OVOneToAny * up) in OVOneToAny_Reset() argument
59 OVOneToAny_Purge(up); in OVOneToAny_Reset()
60 OVOneToAny_Init(up, up->heap); in OVOneToAny_Reset()
63 void OVOneToAny_Dump(OVOneToAny * up) in OVOneToAny_Dump() argument
67 if(up && up->mask) { in OVOneToAny_Dump()
68 for(a = 0; a <= up->mask; a++) { in OVOneToAny_Dump()
69 if(up->forward[a]) { in OVOneToAny_Dump()
72 (unsigned int) a, (int) up->forward[a]); in OVOneToAny_Dump()
77 for(a = 0; a < up->size; a++) in OVOneToAny_Dump()
78 if(up->elem[a].active) { in OVOneToAny_Dump()
82 (int) up->elem[a].forward_value, in OVOneToAny_Dump()
83 (int) up->elem[a].forward_next, (int) up->elem[a].reverse_value); in OVOneToAny_Dump()
92 static void Reload(OVOneToAny * up) in Reload() argument
97 ov_uword mask = up->mask; in Reload()
99 if(up->elem && mask) { in Reload()
101 up_element *elem = up->elem; in Reload()
103 for(a = 0; a < up->size; a++) { in Reload()
113 ov_word *forward = up->forward; in Reload()
114 up_element *elem = up->elem; in Reload()
118 for(a = 0; a < up->size; a++) { in Reload()
133 for(a = 0; a <= up->mask; a++) { in Reload()
134 fprintf(stderr, "Reload-Debug: forward[%d]=%d\n", a, up->forward[a],); in Reload()
141 OVreturn_word OVOneToAny_GetKey(OVOneToAny * up, ov_word forward_value) in OVOneToAny_GetKey() argument
146 if(!up) { in OVOneToAny_GetKey()
150 ov_uword mask = up->mask; in OVOneToAny_GetKey()
153 up_element *elem = up->elem; in OVOneToAny_GetKey()
154 ov_word index = up->forward[hash]; in OVOneToAny_GetKey()
182 static OVstatus Recondition(OVOneToAny * up, ov_uword size, int force) in Recondition() argument
184 if(!up) { in Recondition()
187 ov_uword mask = up->mask; in Recondition()
207 if(!up->elem) { in Recondition()
208 up->elem = OVHeapArray_CALLOC(up->heap, up_element, size); in Recondition()
209 if(!up->elem) { in Recondition()
213 if(mask != up->mask) { in Recondition()
214 ov_word *tmp_forward = OVHeap_CALLOC(up->heap, ov_word, mask + 1); in Recondition()
216 OVHeap_FREE_AUTO_NULL(up->heap, tmp_forward); in Recondition()
220 OVHeap_FREE_AUTO_NULL(up->heap, up->forward); in Recondition()
221 up->forward = tmp_forward; in Recondition()
222 up->mask = mask; in Recondition()
225 ov_utility_zero_range(up->forward, up->forward + (up->mask + 1)); in Recondition()
227 Reload(up); in Recondition()
234 OVstatus OVOneToAny_Pack(OVOneToAny * up) in OVOneToAny_Pack() argument
236 if(!up) { in OVOneToAny_Pack()
239 if(up->n_inactive && up->elem) { in OVOneToAny_Pack()
241 up_element *src = up->elem, *dst = up->elem; in OVOneToAny_Pack()
244 for(a = 0; a < up->size; a++) { in OVOneToAny_Pack()
254 up->n_inactive = 0; in OVOneToAny_Pack()
255 up->next_inactive = 0; in OVOneToAny_Pack()
256 if(new_size > 0 && new_size < up->size) { in OVOneToAny_Pack()
257 if(!OVHeapArray_SET_SIZE(up->elem, up_element, new_size)) in OVOneToAny_Pack()
258 ov_utility_zero_range(up->elem + new_size, up->elem + up->size); in OVOneToAny_Pack()
260 up->size = new_size; in OVOneToAny_Pack()
261 return Recondition(up, new_size, OV_TRUE); in OVOneToAny_Pack()
267 OVreturn_size OVOneToAny_GetSize(OVOneToAny * up) in OVOneToAny_GetSize() argument
269 if(!up) { in OVOneToAny_GetSize()
274 result.size = up->size - up->n_inactive; in OVOneToAny_GetSize()
279 OVstatus OVOneToAny_DelKey(OVOneToAny * up, ov_word forward_value) in OVOneToAny_DelKey() argument
281 if(!up) { in OVOneToAny_DelKey()
284 ov_word mask = up->mask; in OVOneToAny_DelKey()
287 ov_word fwd = up->forward[fwd_hash]; in OVOneToAny_DelKey()
292 up_element *elem = up->elem; in OVOneToAny_DelKey()
309 up->elem[fwd_last - 1].forward_next = fwd_elem->forward_next; in OVOneToAny_DelKey()
311 up->forward[fwd_hash] = fwd_elem->forward_next; in OVOneToAny_DelKey()
316 fwd_elem->forward_next = up->next_inactive; in OVOneToAny_DelKey()
317 up->next_inactive = fwd; in OVOneToAny_DelKey()
318 up->n_inactive++; in OVOneToAny_DelKey()
319 if(up->n_inactive > (up->size >> 1)) /* over half of bits are inactive */ in OVOneToAny_DelKey()
320 OVOneToAny_Pack(up); in OVOneToAny_DelKey()
330 void OVOneToAny_Stats(OVOneToAny * up) in OVOneToAny_Stats() argument
332 if(up && up->mask) { in OVOneToAny_Stats()
335 for(a = 0; a < up->mask; a++) { in OVOneToAny_Stats()
337 ov_word index = up->forward[a]; in OVOneToAny_Stats()
338 up_element *elem = up->elem; in OVOneToAny_Stats()
354 fprintf(stderr, "active=%d n_inactive=%d ", (int) (up->size - up->n_inactive), in OVOneToAny_Stats()
355 (int) up->n_inactive); in OVOneToAny_Stats()
356 fprintf(stderr, "mask=0x%x n_alloc=%lu\n", (unsigned int) up->mask, in OVOneToAny_Stats()
357 (unsigned long) OVHeapArray_GET_SIZE(up->elem)); in OVOneToAny_Stats()
361 OVstatus OVOneToAny_SetKey(OVOneToAny * up, ov_word forward_value, ov_word reverse_value) in OVOneToAny_SetKey() argument
366 if(!up) { in OVOneToAny_SetKey()
369 ov_word mask = up->mask; in OVOneToAny_SetKey()
378 fwd = up->forward[fwd_hash]; in OVOneToAny_SetKey()
382 fwd_hash, up->mask, up->size); in OVOneToAny_SetKey()
388 up_element *elem = up->elem; in OVOneToAny_SetKey()
393 for(a = 0; a < up->size; a++) { in OVOneToAny_SetKey()
398 for(a = 0; a <= up->mask; a++) { in OVOneToAny_SetKey()
401 a, a, up->forward[a]); in OVOneToAny_SetKey()
424 if(up->n_inactive) { in OVOneToAny_SetKey()
425 new_index = up->next_inactive; in OVOneToAny_SetKey()
426 up->next_inactive = up->elem[new_index - 1].forward_next; in OVOneToAny_SetKey()
427 up->n_inactive--; in OVOneToAny_SetKey()
429 if(up->elem && (!OVHeapArray_CHECK(up->elem, up_element, up->size))) { in OVOneToAny_SetKey()
433 if(OVreturn_IS_ERROR(result = Recondition(up, up->size + 1, OV_FALSE))) { in OVOneToAny_SetKey()
437 new_index = ++up->size; in OVOneToAny_SetKey()
442 up_element *elem = up->elem + (new_index - 1); in OVOneToAny_SetKey()
448 mask = up->mask; in OVOneToAny_SetKey()
452 ov_word *forward_start_index = up->forward + fwd_hash; in OVOneToAny_SetKey()
461 for(a = 0; a <= up->mask; a++) { in OVOneToAny_SetKey()
462 fprintf(stderr, "OVOneToAnySet-Debug: forward[%d]=%d\n", a, up->forward[a]); in OVOneToAny_SetKey()