Lines Matching refs:wp
309 _avl_walk_init(uu_avl_walk_t *wp, uu_avl_t *ap, uint32_t flags) in _avl_walk_init() argument
316 (void) memset(wp, 0, sizeof (*wp)); in _avl_walk_init()
317 wp->uaw_avl = ap; in _avl_walk_init()
318 wp->uaw_robust = robust; in _avl_walk_init()
319 wp->uaw_dir = direction; 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()
327 wp->uaw_next = next = &ap->ua_null_walk; in _avl_walk_init()
328 wp->uaw_prev = prev = next->uaw_prev; in _avl_walk_init()
329 next->uaw_prev = wp; in _avl_walk_init()
330 prev->uaw_next = wp; in _avl_walk_init()
335 _avl_walk_advance(uu_avl_walk_t *wp, uu_avl_t *ap) in _avl_walk_advance() argument
337 void *np = wp->uaw_next_result; in _avl_walk_advance()
344 wp->uaw_next_result = (wp->uaw_dir > 0)? AVL_NEXT(t, np) : in _avl_walk_advance()
351 _avl_walk_fini(uu_avl_walk_t *wp) in _avl_walk_fini() argument
353 if (wp->uaw_next != NULL) { in _avl_walk_fini()
354 wp->uaw_next->uaw_prev = wp->uaw_prev; in _avl_walk_fini()
355 wp->uaw_prev->uaw_next = wp->uaw_next; in _avl_walk_fini()
356 wp->uaw_next = NULL; in _avl_walk_fini()
357 wp->uaw_prev = NULL; in _avl_walk_fini()
359 wp->uaw_avl = NULL; in _avl_walk_fini()
360 wp->uaw_next_result = NULL; in _avl_walk_fini()
366 uu_avl_walk_t *wp; in uu_avl_walk_start() local
373 wp = uu_zalloc(sizeof (*wp)); in uu_avl_walk_start()
374 if (wp == NULL) { in uu_avl_walk_start()
379 _avl_walk_init(wp, ap, flags); in uu_avl_walk_start()
380 return (wp); in uu_avl_walk_start()
384 uu_avl_walk_next(uu_avl_walk_t *wp) in uu_avl_walk_next() argument
386 return (_avl_walk_advance(wp, wp->uaw_avl)); in uu_avl_walk_next()
390 uu_avl_walk_end(uu_avl_walk_t *wp) in uu_avl_walk_end() argument
392 _avl_walk_fini(wp); in uu_avl_walk_end()
393 uu_free(wp); in uu_avl_walk_end()
424 uu_avl_walk_t *wp; in uu_avl_remove() local
440 for (wp = ap->ua_null_walk.uaw_next; wp != &ap->ua_null_walk; in uu_avl_remove()
441 wp = wp->uaw_next) { in uu_avl_remove()
442 if (wp->uaw_robust) { in uu_avl_remove()
443 if (elem == wp->uaw_next_result) in uu_avl_remove()
444 (void) _avl_walk_advance(wp, ap); in uu_avl_remove()
445 } else if (wp->uaw_next_result != NULL) { in uu_avl_remove()