Lines Matching refs:tree

136 avl_walk(avl_tree_t *tree, void	*oldnode, int left)  in avl_walk()  argument
138 size_t off = tree->avl_offset; in avl_walk()
183 avl_first(avl_tree_t *tree) in avl_first() argument
187 size_t off = tree->avl_offset; in avl_first()
189 for (node = tree->avl_root; node != NULL; node = node->avl_child[0]) in avl_first()
202 avl_last(avl_tree_t *tree) in avl_last() argument
206 size_t off = tree->avl_offset; in avl_last()
208 for (node = tree->avl_root; node != NULL; node = node->avl_child[1]) in avl_last()
226 avl_nearest(avl_tree_t *tree, avl_index_t where, int direction) in avl_nearest() argument
231 size_t off = tree->avl_offset; in avl_nearest()
234 ASSERT(tree->avl_root == NULL); in avl_nearest()
241 return (avl_walk(tree, data, direction)); in avl_nearest()
255 avl_find(avl_tree_t *tree, const void *value, avl_index_t *where) in avl_find() argument
261 size_t off = tree->avl_offset; in avl_find()
263 for (node = tree->avl_root; node != NULL; in avl_find()
268 diff = tree->avl_compar(value, AVL_NODE2DATA(node, off)); in avl_find()
303 avl_rotation(avl_tree_t *tree, avl_node_t *node, int balance) in avl_rotation() argument
382 tree->avl_root = child; in avl_rotation()
465 tree->avl_root = gchild; in avl_rotation()
482 avl_insert(avl_tree_t *tree, void *new_data, avl_index_t where) in avl_insert() argument
489 size_t off = tree->avl_offset; in avl_insert()
491 ASSERT(tree); in avl_insert()
501 ++tree->avl_numnodes; in avl_insert()
513 ASSERT(tree->avl_root == NULL); in avl_insert()
514 tree->avl_root = node; in avl_insert()
556 (void) avl_rotation(tree, node, new_balance); in avl_insert()
573 avl_tree_t *tree, in avl_insert_here() argument
584 ASSERT(tree != NULL); in avl_insert_here()
593 node = AVL_DATA2NODE(here, tree->avl_offset); in avl_insert_here()
596 diff = tree->avl_compar(new_data, here); in avl_insert_here()
607 diff = tree->avl_compar(new_data, in avl_insert_here()
608 AVL_NODE2DATA(node, tree->avl_offset)); in avl_insert_here()
616 diff = tree->avl_compar(new_data, in avl_insert_here()
617 AVL_NODE2DATA(node, tree->avl_offset)); in avl_insert_here()
625 avl_insert(tree, new_data, AVL_MKINDEX(node, child)); in avl_insert_here()
632 avl_add(avl_tree_t *tree, void *new_node) in avl_add() argument
644 if (avl_find(tree, new_node, &where) != NULL) in avl_add()
651 avl_insert(tree, new_node, where); in avl_add()
678 avl_remove(avl_tree_t *tree, void *data) in avl_remove() argument
689 size_t off = tree->avl_offset; in avl_remove()
691 ASSERT(tree); in avl_remove()
737 tree->avl_root = node; in avl_remove()
758 ASSERT(tree->avl_numnodes > 0); in avl_remove()
759 --tree->avl_numnodes; in avl_remove()
775 tree->avl_root = node; in avl_remove()
818 else if (!avl_rotation(tree, node, new_balance)) in avl_remove()
823 #define AVL_REINSERT(tree, obj) \ argument
824 avl_remove((tree), (obj)); \
825 avl_add((tree), (obj))
903 avl_create(avl_tree_t *tree, int (*compar) (const void *, const void *), in avl_create() argument
906 ASSERT(tree); in avl_create()
914 tree->avl_compar = compar; in avl_create()
915 tree->avl_root = NULL; in avl_create()
916 tree->avl_numnodes = 0; in avl_create()
917 tree->avl_size = size; in avl_create()
918 tree->avl_offset = offset; in avl_create()
926 avl_destroy(avl_tree_t *tree) in avl_destroy() argument
928 ASSERT(tree); in avl_destroy()
929 ASSERT(tree->avl_numnodes == 0); in avl_destroy()
930 ASSERT(tree->avl_root == NULL); in avl_destroy()
938 avl_numnodes(avl_tree_t *tree) in avl_numnodes() argument
940 ASSERT(tree); in avl_numnodes()
941 return (tree->avl_numnodes); in avl_numnodes()
945 avl_is_empty(avl_tree_t *tree) in avl_is_empty() argument
947 ASSERT(tree); in avl_is_empty()
948 return (tree->avl_numnodes == 0); in avl_is_empty()
973 avl_destroy_nodes(avl_tree_t *tree, void **cookie) in avl_destroy_nodes() argument
979 size_t off = tree->avl_offset; in avl_destroy_nodes()
985 first = avl_first(tree); in avl_destroy_nodes()
1005 if (tree->avl_root != NULL) { in avl_destroy_nodes()
1006 ASSERT(tree->avl_numnodes == 1); in avl_destroy_nodes()
1007 tree->avl_root = NULL; in avl_destroy_nodes()
1008 tree->avl_numnodes = 0; in avl_destroy_nodes()
1018 ASSERT(tree->avl_numnodes > 1); in avl_destroy_nodes()
1019 --tree->avl_numnodes; in avl_destroy_nodes()
1057 ASSERT(node == tree->avl_root); in avl_destroy_nodes()