Lines Matching refs:up

27 OVstatus OVOneToOne_Init(OVOneToOne * up, OVHeap * heap)  in OVOneToOne_Init()  argument
29 ov_utility_zero_range(up, up + 1); in OVOneToOne_Init()
30 up->heap = heap; in OVOneToOne_Init()
36 OVOneToOne *up; in OVOneToOne_New() local
37 up = OVHeap_ALLOC(heap, OVOneToOne); in OVOneToOne_New()
38 up->heap = heap; in OVOneToOne_New()
39 return up; in OVOneToOne_New()
42 void OVOneToOne_Purge(OVOneToOne * up) in OVOneToOne_Purge() argument
44 if(up) { in OVOneToOne_Purge()
45 OVHeapArray_FREE_AUTO_NULL(up->elem); in OVOneToOne_Purge()
46 OVHeap_FREE_AUTO_NULL(up->heap, up->forward); in OVOneToOne_Purge()
47 OVHeap_FREE_AUTO_NULL(up->heap, up->reverse); in OVOneToOne_Purge()
51 void OVOneToOne_Del(OVOneToOne * up) in OVOneToOne_Del() argument
53 if(up) { in OVOneToOne_Del()
54 OVOneToOne_Purge(up); in OVOneToOne_Del()
55 OVHeap_FREE_AUTO_NULL(up->heap, up); in OVOneToOne_Del()
59 void OVOneToOne_Reset(OVOneToOne * up) in OVOneToOne_Reset() argument
61 OVOneToOne_Purge(up); in OVOneToOne_Reset()
62 OVOneToOne_Init(up, up->heap); in OVOneToOne_Reset()
65 void OVOneToOne_Dump(OVOneToOne * up) in OVOneToOne_Dump() argument
69 if(up && up->mask) { in OVOneToOne_Dump()
70 for(a = 0; a <= up->mask; a++) { in OVOneToOne_Dump()
71 if(up->forward[a] || up->reverse[a]) { in OVOneToOne_Dump()
74 (unsigned int) a, (int) up->forward[a], in OVOneToOne_Dump()
75 (unsigned int) a, (int) up->reverse[a]); in OVOneToOne_Dump()
80 for(a = 0; a < up->size; a++) in OVOneToOne_Dump()
81 if(up->elem[a].active) { in OVOneToOne_Dump()
85 (int) up->elem[a].forward_value, in OVOneToOne_Dump()
86 (int) up->elem[a].forward_next, in OVOneToOne_Dump()
87 (int) up->elem[a].reverse_value, (int) up->elem[a].reverse_next); in OVOneToOne_Dump()
96 static void Reload(OVOneToOne * up) in Reload() argument
101 ov_uword mask = up->mask; in Reload()
103 if(up->elem && mask) { in Reload()
105 up_element *elem = up->elem; in Reload()
107 for(a = 0; a < up->size; a++) { in Reload()
118 ov_word *forward = up->forward; in Reload()
119 ov_word *reverse = up->reverse; in Reload()
120 up_element *elem = up->elem; in Reload()
125 for(a = 0; a < up->size; a++) { in Reload()
144 for(a = 0; a <= up->mask; a++) { in Reload()
146 a, up->forward[a], a, up->reverse[a]); in Reload()
153 OVreturn_word OVOneToOne_GetReverse(OVOneToOne * up, ov_word reverse_value) in OVOneToOne_GetReverse() argument
155 if(!up) { in OVOneToOne_GetReverse()
159 if(up->mask) { in OVOneToOne_GetReverse()
160 ov_word hash = HASH(reverse_value, up->mask); in OVOneToOne_GetReverse()
161 up_element *elem = up->elem; in OVOneToOne_GetReverse()
162 ov_word index = up->reverse[hash]; in OVOneToOne_GetReverse()
182 OVreturn_word OVOneToOne_IterateForward(OVOneToOne * up, ov_word * hidden) in OVOneToOne_IterateForward() argument
184 if(!up) { in OVOneToOne_IterateForward()
190 up_element *cur_elem = up->elem + (*hidden); in OVOneToOne_IterateForward()
191 for(a = *hidden; a < up->size; a++) { in OVOneToOne_IterateForward()
205 OVreturn_word OVOneToOne_GetForward(OVOneToOne * up, ov_word forward_value) in OVOneToOne_GetForward() argument
207 if(!up) { in OVOneToOne_GetForward()
211 ov_uword mask = up->mask; in OVOneToOne_GetForward()
214 up_element *elem = up->elem; in OVOneToOne_GetForward()
215 ov_word index = up->forward[hash]; in OVOneToOne_GetForward()
234 static OVstatus Recondition(OVOneToOne * up, ov_uword size, int force) in Recondition() argument
236 if(!up) { in Recondition()
239 ov_uword mask = up->mask; in Recondition()
259 if(!up->elem) { in Recondition()
260 up->elem = OVHeapArray_CALLOC(up->heap, up_element, size); in Recondition()
261 if(!up->elem) { in Recondition()
265 if(mask != up->mask) { in Recondition()
266 ov_word *tmp_forward = OVHeap_CALLOC(up->heap, ov_word, mask + 1); in Recondition()
267 ov_word *tmp_reverse = OVHeap_CALLOC(up->heap, ov_word, mask + 1); in Recondition()
269 OVHeap_FREE_AUTO_NULL(up->heap, tmp_forward); in Recondition()
270 OVHeap_FREE_AUTO_NULL(up->heap, tmp_reverse); in Recondition()
274 OVHeap_FREE_AUTO_NULL(up->heap, up->forward); in Recondition()
275 OVHeap_FREE_AUTO_NULL(up->heap, up->reverse); in Recondition()
276 up->forward = tmp_forward; in Recondition()
277 up->reverse = tmp_reverse; in Recondition()
278 up->mask = mask; in Recondition()
281 ov_utility_zero_range(up->forward, up->forward + (up->mask + 1)); in Recondition()
282 ov_utility_zero_range(up->reverse, up->reverse + (up->mask + 1)); in Recondition()
284 Reload(up); in Recondition()
291 OVstatus OVOneToOne_Pack(OVOneToOne * up) in OVOneToOne_Pack() argument
293 if(!up) { in OVOneToOne_Pack()
296 if(up->n_inactive && up->elem) { in OVOneToOne_Pack()
298 up_element *src = up->elem, *dst = up->elem; in OVOneToOne_Pack()
301 for(a = 0; a < up->size; a++) { in OVOneToOne_Pack()
311 up->n_inactive = 0; in OVOneToOne_Pack()
312 up->next_inactive = 0; in OVOneToOne_Pack()
313 if(new_size > 0 && new_size < up->size) { in OVOneToOne_Pack()
314 if(!OVHeapArray_SET_SIZE(up->elem, up_element, new_size)) in OVOneToOne_Pack()
315 ov_utility_zero_range(up->elem + new_size, up->elem + up->size); in OVOneToOne_Pack()
317 up->size = new_size; in OVOneToOne_Pack()
318 return Recondition(up, new_size, OV_TRUE); in OVOneToOne_Pack()
324 OVreturn_size OVOneToOne_GetSize(OVOneToOne * up) in OVOneToOne_GetSize() argument
326 if(!up) { in OVOneToOne_GetSize()
331 result.size = up->size - up->n_inactive; in OVOneToOne_GetSize()
336 OVstatus OVOneToOne_DelReverse(OVOneToOne * up, ov_word reverse_value) in OVOneToOne_DelReverse() argument
338 if(!up) { in OVOneToOne_DelReverse()
341 ov_word mask = up->mask; in OVOneToOne_DelReverse()
344 ov_word rev = up->reverse[rev_hash]; in OVOneToOne_DelReverse()
350 up_element *elem = up->elem; in OVOneToOne_DelReverse()
364 ov_word fwd = up->forward[fwd_hash]; in OVOneToOne_DelReverse()
381 up->elem[rev_last - 1].reverse_next = rev_elem->reverse_next; in OVOneToOne_DelReverse()
383 up->reverse[rev_hash] = rev_elem->reverse_next; in OVOneToOne_DelReverse()
386 up->elem[fwd_last - 1].forward_next = fwd_elem->forward_next; in OVOneToOne_DelReverse()
388 up->forward[fwd_hash] = fwd_elem->forward_next; in OVOneToOne_DelReverse()
393 rev_elem->forward_next = up->next_inactive; in OVOneToOne_DelReverse()
394 up->next_inactive = rev; in OVOneToOne_DelReverse()
395 up->n_inactive++; in OVOneToOne_DelReverse()
396 if(up->n_inactive > (up->size >> 1)) /* over half of bits are inactive */ in OVOneToOne_DelReverse()
397 OVOneToOne_Pack(up); in OVOneToOne_DelReverse()
407 OVstatus OVOneToOne_DelForward(OVOneToOne * up, ov_word forward_value) in OVOneToOne_DelForward() argument
409 if(!up) { in OVOneToOne_DelForward()
412 ov_word mask = up->mask; in OVOneToOne_DelForward()
415 ov_word fwd = up->forward[fwd_hash]; in OVOneToOne_DelForward()
420 up_element *elem = up->elem; in OVOneToOne_DelForward()
434 ov_word rev = up->reverse[rev_hash]; in OVOneToOne_DelForward()
451 up->elem[fwd_last - 1].forward_next = fwd_elem->forward_next; in OVOneToOne_DelForward()
453 up->forward[fwd_hash] = fwd_elem->forward_next; in OVOneToOne_DelForward()
456 up->elem[rev_last - 1].reverse_next = rev_elem->reverse_next; in OVOneToOne_DelForward()
458 up->reverse[rev_hash] = rev_elem->reverse_next; in OVOneToOne_DelForward()
463 fwd_elem->forward_next = up->next_inactive; in OVOneToOne_DelForward()
464 up->next_inactive = fwd; in OVOneToOne_DelForward()
465 up->n_inactive++; in OVOneToOne_DelForward()
466 if(up->n_inactive > (up->size >> 1)) /* over half of bits are inactive */ in OVOneToOne_DelForward()
467 OVOneToOne_Pack(up); in OVOneToOne_DelForward()
477 void OVOneToOne_Stats(OVOneToOne * up) in OVOneToOne_Stats() argument
479 if(up && up->mask) { in OVOneToOne_Stats()
482 for(a = 0; a < up->mask; a++) { in OVOneToOne_Stats()
484 ov_word index = up->forward[a]; in OVOneToOne_Stats()
485 up_element *elem = up->elem; in OVOneToOne_Stats()
500 ov_word index = up->reverse[a]; in OVOneToOne_Stats()
501 up_element *elem = up->elem; in OVOneToOne_Stats()
517 fprintf(stderr, "active=%d n_inactive=%d ", (int)( up->size - up->n_inactive), in OVOneToOne_Stats()
518 (int) up->n_inactive); in OVOneToOne_Stats()
519 fprintf(stderr, "mask=0x%x n_alloc=%lu\n", (unsigned int) up->mask, in OVOneToOne_Stats()
520 (unsigned long) OVHeapArray_GET_SIZE(up->elem)); in OVOneToOne_Stats()
524 OVstatus OVOneToOne_Set(OVOneToOne * up, ov_word forward_value, ov_word reverse_value) in OVOneToOne_Set() argument
526 if(!up) { in OVOneToOne_Set()
529 ov_word mask = up->mask; in OVOneToOne_Set()
541 fwd = up->forward[fwd_hash]; in OVOneToOne_Set()
542 rev = up->reverse[rev_hash]; in OVOneToOne_Set()
547 fwd_hash, rev_hash, up->mask, up->size); in OVOneToOne_Set()
553 up_element *elem = up->elem; in OVOneToOne_Set()
558 for(a = 0; a < up->size; a++) { in OVOneToOne_Set()
563 for(a = 0; a <= up->mask; a++) { in OVOneToOne_Set()
566 a, up->forward[a], up->reverse[a]); in OVOneToOne_Set()
595 if(up->n_inactive) { in OVOneToOne_Set()
596 new_index = up->next_inactive; in OVOneToOne_Set()
597 up->next_inactive = up->elem[new_index - 1].forward_next; in OVOneToOne_Set()
598 up->n_inactive--; in OVOneToOne_Set()
600 if(up->elem && (!OVHeapArray_CHECK(up->elem, up_element, up->size))) { in OVOneToOne_Set()
604 if(OVreturn_IS_ERROR(result = Recondition(up, up->size + 1, OV_FALSE))) { in OVOneToOne_Set()
608 new_index = ++up->size; in OVOneToOne_Set()
613 up_element *elem = up->elem + (new_index - 1); in OVOneToOne_Set()
619 mask = up->mask; in OVOneToOne_Set()
624 ov_word *forward_start_index = up->forward + fwd_hash; in OVOneToOne_Set()
625 ov_word *reverse_start_index = up->reverse + rev_hash; in OVOneToOne_Set()
636 for(a = 0; a <= up->mask; a++) { in OVOneToOne_Set()
638 a, up->forward[a], a, up->reverse[a]); in OVOneToOne_Set()