Lines Matching refs:wp

307 _avl_walk_init(uu_avl_walk_t *wp, uu_avl_t *ap, uint32_t flags)  in _avl_walk_init()  argument
314 (void) memset(wp, 0, sizeof (*wp)); in _avl_walk_init()
315 wp->uaw_avl = ap; in _avl_walk_init()
316 wp->uaw_robust = robust; in _avl_walk_init()
317 wp->uaw_dir = direction; in _avl_walk_init()
320 wp->uaw_next_result = avl_first(&ap->ua_tree); in _avl_walk_init()
322 wp->uaw_next_result = avl_last(&ap->ua_tree); in _avl_walk_init()
325 wp->uaw_next = next = &ap->ua_null_walk; in _avl_walk_init()
326 wp->uaw_prev = prev = next->uaw_prev; in _avl_walk_init()
327 next->uaw_prev = wp; in _avl_walk_init()
328 prev->uaw_next = wp; in _avl_walk_init()
333 _avl_walk_advance(uu_avl_walk_t *wp, uu_avl_t *ap) in _avl_walk_advance() argument
335 void *np = wp->uaw_next_result; in _avl_walk_advance()
342 wp->uaw_next_result = (wp->uaw_dir > 0)? AVL_NEXT(t, np) : in _avl_walk_advance()
349 _avl_walk_fini(uu_avl_walk_t *wp) in _avl_walk_fini() argument
351 if (wp->uaw_next != NULL) { in _avl_walk_fini()
352 wp->uaw_next->uaw_prev = wp->uaw_prev; in _avl_walk_fini()
353 wp->uaw_prev->uaw_next = wp->uaw_next; in _avl_walk_fini()
354 wp->uaw_next = NULL; in _avl_walk_fini()
355 wp->uaw_prev = NULL; in _avl_walk_fini()
357 wp->uaw_avl = NULL; in _avl_walk_fini()
358 wp->uaw_next_result = NULL; in _avl_walk_fini()
364 uu_avl_walk_t *wp; in uu_avl_walk_start() local
371 wp = uu_zalloc(sizeof (*wp)); in uu_avl_walk_start()
372 if (wp == NULL) { in uu_avl_walk_start()
377 _avl_walk_init(wp, ap, flags); in uu_avl_walk_start()
378 return (wp); in uu_avl_walk_start()
382 uu_avl_walk_next(uu_avl_walk_t *wp) in uu_avl_walk_next() argument
384 return (_avl_walk_advance(wp, wp->uaw_avl)); in uu_avl_walk_next()
388 uu_avl_walk_end(uu_avl_walk_t *wp) in uu_avl_walk_end() argument
390 _avl_walk_fini(wp); in uu_avl_walk_end()
391 uu_free(wp); in uu_avl_walk_end()
422 uu_avl_walk_t *wp; in uu_avl_remove() local
438 for (wp = ap->ua_null_walk.uaw_next; wp != &ap->ua_null_walk; in uu_avl_remove()
439 wp = wp->uaw_next) { in uu_avl_remove()
440 if (wp->uaw_robust) { in uu_avl_remove()
441 if (elem == wp->uaw_next_result) in uu_avl_remove()
442 (void) _avl_walk_advance(wp, ap); in uu_avl_remove()
443 } else if (wp->uaw_next_result != NULL) { in uu_avl_remove()