Lines Matching refs:wp
308 _avl_walk_init(uu_avl_walk_t *wp, uu_avl_t *ap, uint32_t flags) in _avl_walk_init() argument
315 (void) memset(wp, 0, sizeof (*wp)); in _avl_walk_init()
316 wp->uaw_avl = ap; in _avl_walk_init()
317 wp->uaw_robust = robust; in _avl_walk_init()
318 wp->uaw_dir = direction; in _avl_walk_init()
321 wp->uaw_next_result = avl_first(&ap->ua_tree); in _avl_walk_init()
323 wp->uaw_next_result = avl_last(&ap->ua_tree); in _avl_walk_init()
326 wp->uaw_next = next = &ap->ua_null_walk; in _avl_walk_init()
327 wp->uaw_prev = prev = next->uaw_prev; in _avl_walk_init()
328 next->uaw_prev = wp; in _avl_walk_init()
329 prev->uaw_next = wp; in _avl_walk_init()
334 _avl_walk_advance(uu_avl_walk_t *wp, uu_avl_t *ap) in _avl_walk_advance() argument
336 void *np = wp->uaw_next_result; in _avl_walk_advance()
343 wp->uaw_next_result = (wp->uaw_dir > 0)? AVL_NEXT(t, np) : in _avl_walk_advance()
350 _avl_walk_fini(uu_avl_walk_t *wp) in _avl_walk_fini() argument
352 if (wp->uaw_next != NULL) { in _avl_walk_fini()
353 wp->uaw_next->uaw_prev = wp->uaw_prev; in _avl_walk_fini()
354 wp->uaw_prev->uaw_next = wp->uaw_next; in _avl_walk_fini()
355 wp->uaw_next = NULL; in _avl_walk_fini()
356 wp->uaw_prev = NULL; in _avl_walk_fini()
358 wp->uaw_avl = NULL; in _avl_walk_fini()
359 wp->uaw_next_result = NULL; in _avl_walk_fini()
365 uu_avl_walk_t *wp; in uu_avl_walk_start() local
372 wp = uu_zalloc(sizeof (*wp)); in uu_avl_walk_start()
373 if (wp == NULL) { in uu_avl_walk_start()
378 _avl_walk_init(wp, ap, flags); in uu_avl_walk_start()
379 return (wp); in uu_avl_walk_start()
383 uu_avl_walk_next(uu_avl_walk_t *wp) in uu_avl_walk_next() argument
385 return (_avl_walk_advance(wp, wp->uaw_avl)); in uu_avl_walk_next()
389 uu_avl_walk_end(uu_avl_walk_t *wp) in uu_avl_walk_end() argument
391 _avl_walk_fini(wp); in uu_avl_walk_end()
392 uu_free(wp); in uu_avl_walk_end()
423 uu_avl_walk_t *wp; in uu_avl_remove() local
439 for (wp = ap->ua_null_walk.uaw_next; wp != &ap->ua_null_walk; in uu_avl_remove()
440 wp = wp->uaw_next) { in uu_avl_remove()
441 if (wp->uaw_robust) { in uu_avl_remove()
442 if (elem == wp->uaw_next_result) in uu_avl_remove()
443 (void) _avl_walk_advance(wp, ap); in uu_avl_remove()
444 } else if (wp->uaw_next_result != NULL) { in uu_avl_remove()