Lines Matching refs:ap

213 	uu_avl_t *ap, *next, *prev;  in uu_avl_create()  local
220 ap = uu_zalloc(sizeof (*ap)); in uu_avl_create()
221 if (ap == NULL) { in uu_avl_create()
226 ap->ua_pool = pp; in uu_avl_create()
227 ap->ua_parent_enc = UU_PTR_ENCODE(parent); in uu_avl_create()
228 ap->ua_debug = pp->uap_debug || (flags & UU_AVL_DEBUG); in uu_avl_create()
229 ap->ua_index = (pp->uap_last_index = INDEX_NEXT(pp->uap_last_index)); in uu_avl_create()
231 avl_create(&ap->ua_tree, &uu_avl_node_compare, pp->uap_objsize, in uu_avl_create()
234 ap->ua_null_walk.uaw_next = &ap->ua_null_walk; in uu_avl_create()
235 ap->ua_null_walk.uaw_prev = &ap->ua_null_walk; in uu_avl_create()
240 ap->ua_next_enc = UU_PTR_ENCODE(next); in uu_avl_create()
241 ap->ua_prev_enc = UU_PTR_ENCODE(prev); in uu_avl_create()
242 next->ua_prev_enc = UU_PTR_ENCODE(ap); in uu_avl_create()
243 prev->ua_next_enc = UU_PTR_ENCODE(ap); in uu_avl_create()
246 return (ap); in uu_avl_create()
250 uu_avl_destroy(uu_avl_t *ap) in uu_avl_destroy() argument
252 uu_avl_pool_t *pp = ap->ua_pool; in uu_avl_destroy()
254 if (ap->ua_debug) { in uu_avl_destroy()
255 if (avl_numnodes(&ap->ua_tree) != 0) { in uu_avl_destroy()
257 (void *)ap); in uu_avl_destroy()
259 if (ap->ua_null_walk.uaw_next != &ap->ua_null_walk || in uu_avl_destroy()
260 ap->ua_null_walk.uaw_prev != &ap->ua_null_walk) { in uu_avl_destroy()
262 (void *)ap); in uu_avl_destroy()
266 UU_AVL_PTR(ap->ua_next_enc)->ua_prev_enc = ap->ua_prev_enc; in uu_avl_destroy()
267 UU_AVL_PTR(ap->ua_prev_enc)->ua_next_enc = ap->ua_next_enc; in uu_avl_destroy()
269 ap->ua_prev_enc = UU_PTR_ENCODE(NULL); in uu_avl_destroy()
270 ap->ua_next_enc = UU_PTR_ENCODE(NULL); in uu_avl_destroy()
272 ap->ua_pool = NULL; in uu_avl_destroy()
273 avl_destroy(&ap->ua_tree); in uu_avl_destroy()
275 uu_free(ap); in uu_avl_destroy()
279 uu_avl_numnodes(uu_avl_t *ap) in uu_avl_numnodes() argument
281 return (avl_numnodes(&ap->ua_tree)); in uu_avl_numnodes()
285 uu_avl_first(uu_avl_t *ap) in uu_avl_first() argument
287 return (avl_first(&ap->ua_tree)); in uu_avl_first()
291 uu_avl_last(uu_avl_t *ap) in uu_avl_last() argument
293 return (avl_last(&ap->ua_tree)); in uu_avl_last()
297 uu_avl_next(uu_avl_t *ap, void *node) in uu_avl_next() argument
299 return (AVL_NEXT(&ap->ua_tree, node)); in uu_avl_next()
303 uu_avl_prev(uu_avl_t *ap, void *node) in uu_avl_prev() argument
305 return (AVL_PREV(&ap->ua_tree, node)); in uu_avl_prev()
309 _avl_walk_init(uu_avl_walk_t *wp, uu_avl_t *ap, uint32_t flags) in _avl_walk_init() argument
317 wp->uaw_avl = ap; in _avl_walk_init()
322 wp->uaw_next_result = avl_first(&ap->ua_tree); in _avl_walk_init()
324 wp->uaw_next_result = avl_last(&ap->ua_tree); in _avl_walk_init()
326 if (ap->ua_debug || robust) { in _avl_walk_init()
327 wp->uaw_next = next = &ap->ua_null_walk; in _avl_walk_init()
335 _avl_walk_advance(uu_avl_walk_t *wp, uu_avl_t *ap) in _avl_walk_advance() argument
339 avl_tree_t *t = &ap->ua_tree; in _avl_walk_advance()
364 uu_avl_walk_start(uu_avl_t *ap, uint32_t flags) in uu_avl_walk_start() argument
379 _avl_walk_init(wp, ap, flags); in uu_avl_walk_start()
397 uu_avl_walk(uu_avl_t *ap, uu_walk_fn_t *func, void *private, uint32_t flags) in uu_avl_walk() argument
409 _avl_walk_init(&my_walk, ap, flags); in uu_avl_walk()
411 (e = _avl_walk_advance(&my_walk, ap)) != NULL) in uu_avl_walk()
422 uu_avl_remove(uu_avl_t *ap, void *elem) in uu_avl_remove() argument
425 uu_avl_pool_t *pp = ap->ua_pool; in uu_avl_remove()
428 if (ap->ua_debug) { in uu_avl_remove()
432 ap->ua_index = INDEX_NEXT(ap->ua_index); in uu_avl_remove()
440 for (wp = ap->ua_null_walk.uaw_next; wp != &ap->ua_null_walk; in uu_avl_remove()
444 (void) _avl_walk_advance(wp, ap); in uu_avl_remove()
447 "walker\n", (void *)ap, elem); in uu_avl_remove()
451 avl_remove(&ap->ua_tree, elem); in uu_avl_remove()
458 uu_avl_teardown(uu_avl_t *ap, void **cookie) in uu_avl_teardown() argument
460 void *elem = avl_destroy_nodes(&ap->ua_tree, cookie); in uu_avl_teardown()
463 uu_avl_pool_t *pp = ap->ua_pool; in uu_avl_teardown()
473 uu_avl_find(uu_avl_t *ap, void *elem, void *private, uu_avl_index_t *out) in uu_avl_find() argument
478 info.ac_compare = ap->ua_pool->uap_cmp; in uu_avl_find()
483 result = avl_find(&ap->ua_tree, &info, out); in uu_avl_find()
485 *out = INDEX_ENCODE(ap, *out); in uu_avl_find()
487 if (ap->ua_debug && result != NULL) in uu_avl_find()
494 uu_avl_insert(uu_avl_t *ap, void *elem, uu_avl_index_t idx) in uu_avl_insert() argument
496 if (ap->ua_debug) { in uu_avl_insert()
497 uu_avl_pool_t *pp = ap->ua_pool; in uu_avl_insert()
503 (void *)ap, elem, (void *)idx); in uu_avl_insert()
507 (void *)ap, elem, (void *)idx); in uu_avl_insert()
511 (void *)ap, elem, (void *)idx); in uu_avl_insert()
513 if (!INDEX_VALID(ap, idx)) in uu_avl_insert()
515 (void *)ap, elem, (void *)idx, in uu_avl_insert()
522 ap->ua_index = INDEX_NEXT(ap->ua_index); in uu_avl_insert()
524 avl_insert(&ap->ua_tree, elem, INDEX_DECODE(idx)); in uu_avl_insert()
528 uu_avl_nearest_next(uu_avl_t *ap, uu_avl_index_t idx) in uu_avl_nearest_next() argument
530 if (ap->ua_debug && !INDEX_VALID(ap, idx)) in uu_avl_nearest_next()
532 (void *)ap, (void *)idx, INDEX_CHECK(idx)? in uu_avl_nearest_next()
534 return (avl_nearest(&ap->ua_tree, INDEX_DECODE(idx), AVL_AFTER)); in uu_avl_nearest_next()
538 uu_avl_nearest_prev(uu_avl_t *ap, uu_avl_index_t idx) in uu_avl_nearest_prev() argument
540 if (ap->ua_debug && !INDEX_VALID(ap, idx)) in uu_avl_nearest_prev()
542 (void *)ap, (void *)idx, INDEX_CHECK(idx)? in uu_avl_nearest_prev()
544 return (avl_nearest(&ap->ua_tree, INDEX_DECODE(idx), AVL_BEFORE)); in uu_avl_nearest_prev()