AVL_DESTROY_NODES(3AVL) AVL Tree Library Functions AVL_DESTROY_NODES(3AVL)
NAME
avl_destroy_nodes - efficiently remove nodes from an AVL tree
SYNOPSIS
AVL Tree Library (libavl, -lavl)
#include <sys/avl.h> void * avl_destroy_nodes(
avl_tree_t *tree,
void **cookie);
DESCRIPTION
The
avl_destroy_nodes() function is used to efficiently remove nodes from
the AVL tree rooted at
tree.
After the
avl_destroy_nodes() function is called on an AVL tree, the only
valid functions that may be called on it are additional calls to
avl_destroy_nodes() and finally
avl_destroy().
Before calling
avl_destroy_nodes(), callers must first initialize a value
of type
void * to
NULL and pass a pointer to it as the argument
cookie.
This is an opaque value that will be used to maintain where to next delete
items from the tree. Callers should never modify it after initializing it.
After each call to
avl_destroy_nodes(),
cookie will be updated and must be
passed to subsequent calls to
avl_destroy_nodes().
Each time
avl_destroy_nodes() is called, it will return a pointer to an
object that had previously been inserted into the tree, allowing a caller
the opportunity to delete or clean it up. Once
avl_destroy_nodes() returns
a
NULL pointer, then the tree is empty and the caller should proceed to
call
avl_destroy(3AVL).
The examples in
libavl(3LIB) demonstrate the correct usage of this
interface.
RETURN VALUES
The
avl_destroy_nodes() function will return a pointer to the object just
removed from the tree rooted at
tree and if
tree is empty, it will return
NULL.
EXAMPLES
See the
EXAMPLES section in
libavl(3LIB).
INTERFACE STABILITY
CommittedMT-Level See
Locking in
libavl(3LIB).
SEE ALSO
avl_destroy(3AVL),
libavl(3LIB)illumos December 3, 2015 illumos