Lines Matching refs:tree

135 avl_walk(avl_tree_t *tree, void	*oldnode, int left)  in avl_walk()  argument
137 size_t off = tree->avl_offset; in avl_walk()
182 avl_first(avl_tree_t *tree) in avl_first() argument
186 size_t off = tree->avl_offset; in avl_first()
188 for (node = tree->avl_root; node != NULL; node = node->avl_child[0]) in avl_first()
201 avl_last(avl_tree_t *tree) in avl_last() argument
205 size_t off = tree->avl_offset; in avl_last()
207 for (node = tree->avl_root; node != NULL; node = node->avl_child[1]) in avl_last()
225 avl_nearest(avl_tree_t *tree, avl_index_t where, int direction) in avl_nearest() argument
230 size_t off = tree->avl_offset; in avl_nearest()
233 ASSERT(tree->avl_root == NULL); in avl_nearest()
240 return (avl_walk(tree, data, direction)); in avl_nearest()
254 avl_find(avl_tree_t *tree, const void *value, avl_index_t *where) in avl_find() argument
260 size_t off = tree->avl_offset; in avl_find()
262 for (node = tree->avl_root; node != NULL; in avl_find()
267 diff = tree->avl_compar(value, AVL_NODE2DATA(node, off)); in avl_find()
302 avl_rotation(avl_tree_t *tree, avl_node_t *node, int balance) in avl_rotation() argument
381 tree->avl_root = child; in avl_rotation()
464 tree->avl_root = gchild; in avl_rotation()
481 avl_insert(avl_tree_t *tree, void *new_data, avl_index_t where) in avl_insert() argument
488 size_t off = tree->avl_offset; in avl_insert()
490 ASSERT(tree); in avl_insert()
500 ++tree->avl_numnodes; in avl_insert()
512 ASSERT(tree->avl_root == NULL); in avl_insert()
513 tree->avl_root = node; in avl_insert()
555 (void) avl_rotation(tree, node, new_balance); in avl_insert()
572 avl_tree_t *tree, in avl_insert_here() argument
583 ASSERT(tree != NULL); in avl_insert_here()
592 node = AVL_DATA2NODE(here, tree->avl_offset); in avl_insert_here()
595 diff = tree->avl_compar(new_data, here); in avl_insert_here()
606 diff = tree->avl_compar(new_data, in avl_insert_here()
607 AVL_NODE2DATA(node, tree->avl_offset)); in avl_insert_here()
615 diff = tree->avl_compar(new_data, in avl_insert_here()
616 AVL_NODE2DATA(node, tree->avl_offset)); in avl_insert_here()
624 avl_insert(tree, new_data, AVL_MKINDEX(node, child)); in avl_insert_here()
631 avl_add(avl_tree_t *tree, void *new_node) in avl_add() argument
641 if (avl_find(tree, new_node, &where) != NULL) in avl_add()
647 avl_insert(tree, new_node, where); in avl_add()
674 avl_remove(avl_tree_t *tree, void *data) in avl_remove() argument
685 size_t off = tree->avl_offset; in avl_remove()
687 ASSERT(tree); in avl_remove()
733 tree->avl_root = node; in avl_remove()
754 ASSERT(tree->avl_numnodes > 0); in avl_remove()
755 --tree->avl_numnodes; in avl_remove()
771 tree->avl_root = node; in avl_remove()
814 else if (!avl_rotation(tree, node, new_balance)) in avl_remove()
819 #define AVL_REINSERT(tree, obj) \ argument
820 avl_remove((tree), (obj)); \
821 avl_add((tree), (obj))
899 avl_create(avl_tree_t *tree, int (*compar) (const void *, const void *), in avl_create() argument
902 ASSERT(tree); in avl_create()
910 tree->avl_compar = compar; in avl_create()
911 tree->avl_root = NULL; in avl_create()
912 tree->avl_numnodes = 0; in avl_create()
913 tree->avl_size = size; in avl_create()
914 tree->avl_offset = offset; in avl_create()
922 avl_destroy(avl_tree_t *tree) in avl_destroy() argument
924 ASSERT(tree); in avl_destroy()
925 ASSERT(tree->avl_numnodes == 0); in avl_destroy()
926 ASSERT(tree->avl_root == NULL); in avl_destroy()
934 avl_numnodes(avl_tree_t *tree) in avl_numnodes() argument
936 ASSERT(tree); in avl_numnodes()
937 return (tree->avl_numnodes); in avl_numnodes()
941 avl_is_empty(avl_tree_t *tree) in avl_is_empty() argument
943 ASSERT(tree); in avl_is_empty()
944 return (tree->avl_numnodes == 0); in avl_is_empty()
969 avl_destroy_nodes(avl_tree_t *tree, void **cookie) in avl_destroy_nodes() argument
975 size_t off = tree->avl_offset; in avl_destroy_nodes()
981 first = avl_first(tree); in avl_destroy_nodes()
1001 if (tree->avl_root != NULL) { in avl_destroy_nodes()
1002 ASSERT(tree->avl_numnodes == 1); in avl_destroy_nodes()
1003 tree->avl_root = NULL; in avl_destroy_nodes()
1004 tree->avl_numnodes = 0; in avl_destroy_nodes()
1014 ASSERT(tree->avl_numnodes > 1); in avl_destroy_nodes()
1015 --tree->avl_numnodes; in avl_destroy_nodes()
1053 ASSERT(node == tree->avl_root); in avl_destroy_nodes()