xref: /titanic_50/usr/src/man/man3avl/avl_destroy_nodes.3avl (revision 3a005aada8ac0e291c13cbc488ba9ae1473f0a96)
1fa9922c2SRobert Mustacchi.\"
2fa9922c2SRobert Mustacchi.\" This file and its contents are supplied under the terms of the
3fa9922c2SRobert Mustacchi.\" Common Development and Distribution License ("CDDL"), version 1.0.
4fa9922c2SRobert Mustacchi.\" You may only use this file in accordance with the terms of version
5fa9922c2SRobert Mustacchi.\" 1.0 of the CDDL.
6fa9922c2SRobert Mustacchi.\"
7fa9922c2SRobert Mustacchi.\" A full copy of the text of the CDDL should have accompanied this
8fa9922c2SRobert Mustacchi.\" source.  A copy of the CDDL is also available via the Internet at
9fa9922c2SRobert Mustacchi.\" http://www.illumos.org/license/CDDL.
10fa9922c2SRobert Mustacchi.\"
11fa9922c2SRobert Mustacchi.\"
12fa9922c2SRobert Mustacchi.\" Copyright 2015 Joyent, Inc.
13fa9922c2SRobert Mustacchi.\"
14fa9922c2SRobert Mustacchi.Dd May 07, 2015
15fa9922c2SRobert Mustacchi.Dt AVL_DESTROY_NODES 3AVL
16fa9922c2SRobert Mustacchi.Os
17fa9922c2SRobert Mustacchi.Sh NAME
18fa9922c2SRobert Mustacchi.Nm avl_destroy_nodes
19fa9922c2SRobert Mustacchi.Nd efficiently remove nodes from an AVL tree
20fa9922c2SRobert Mustacchi.Sh SYNOPSIS
21fa9922c2SRobert Mustacchi.Lb libavl
22fa9922c2SRobert Mustacchi.In sys/avl.h
23fa9922c2SRobert Mustacchi.Ft void *
24fa9922c2SRobert Mustacchi.Fo avl_destroy_nodes
25fa9922c2SRobert Mustacchi.Fa "avl_tree_t *tree"
26fa9922c2SRobert Mustacchi.Fa "void **cookie"
27fa9922c2SRobert Mustacchi.Fc
28fa9922c2SRobert Mustacchi.Sh DESCRIPTION
29fa9922c2SRobert MustacchiThe
30fa9922c2SRobert Mustacchi.Fn avl_destroy_nodes
31fa9922c2SRobert Mustacchifunction is used to efficiently remove nodes from the AVL tree rooted at
32fa9922c2SRobert Mustacchi.Fa tree .
33fa9922c2SRobert Mustacchi.Pp
34fa9922c2SRobert MustacchiAfter the
35fa9922c2SRobert Mustacchi.Fn avl_destroy_nodes
36fa9922c2SRobert Mustacchifunction is called on an AVL tree, the only valid functions that may be
37fa9922c2SRobert Mustacchicalled on it are additional calls to
38fa9922c2SRobert Mustacchi.Fn avl_destroy_nodes
39fa9922c2SRobert Mustacchiand finally
40fa9922c2SRobert Mustacchi.Fn avl_destroy .
41fa9922c2SRobert Mustacchi.Pp
42fa9922c2SRobert MustacchiBefore calling
43fa9922c2SRobert Mustacchi.Fn avl_destroy_nodes ,
44fa9922c2SRobert Mustacchicallers must first initialize a value of type
45fa9922c2SRobert Mustacchi.Vt "void *"
46fa9922c2SRobert Mustacchito
47fa9922c2SRobert Mustacchi.Sy NULL
48fa9922c2SRobert Mustacchiand pass a pointer to it as the argument
49fa9922c2SRobert Mustacchi.Fa cookie .
50fa9922c2SRobert MustacchiThis is an opaque value that will be used to maintain where to next
51fa9922c2SRobert Mustacchidelete items from the tree. Callers should never modify it after
52fa9922c2SRobert Mustacchiinitializing it. After each call to
53fa9922c2SRobert Mustacchi.Fn avl_destroy_nodes ,
54fa9922c2SRobert Mustacchi.Fa cookie
55fa9922c2SRobert Mustacchiwill be updated and must be passed to subsequent calls to
56fa9922c2SRobert Mustacchi.Fn avl_destroy_nodes.
57fa9922c2SRobert Mustacchi.Pp
58fa9922c2SRobert MustacchiEach time
59fa9922c2SRobert Mustacchi.Fn avl_destroy_nodes
60fa9922c2SRobert Mustacchiis called, it will return a pointer to an object that had previously
61fa9922c2SRobert Mustacchibeen inserted into the tree, allowing a caller the opportunity to delete
62fa9922c2SRobert Mustacchior clean it up. Once
63fa9922c2SRobert Mustacchi.Fn avl_destroy_nodes
64fa9922c2SRobert Mustacchireturns a
65fa9922c2SRobert Mustacchi.Sy NULL
66fa9922c2SRobert Mustacchipointer, then the tree is empty and the caller should proceed to call
67fa9922c2SRobert Mustacchi.Xr avl_destroy 3AVL .
68fa9922c2SRobert Mustacchi.Pp
69fa9922c2SRobert MustacchiThe examples in
70fa9922c2SRobert Mustacchi.Xr libavl 3LIB
71fa9922c2SRobert Mustacchidemonstrate the correct usage of this interface.
72fa9922c2SRobert Mustacchi.Sh RETURN VALUES
73fa9922c2SRobert MustacchiThe
74fa9922c2SRobert Mustacchi.Fn avl_destroy_nodes
75fa9922c2SRobert Mustacchifunction will return a pointer to the object just removed from
76fa9922c2SRobert Mustacchithe tree rooted at
77fa9922c2SRobert Mustacchi.Fa tree
78fa9922c2SRobert Mustacchiand if
79fa9922c2SRobert Mustacchi.Fa tree
80fa9922c2SRobert Mustacchiis empty, it will return
81fa9922c2SRobert Mustacchi.Sy NULL .
82fa9922c2SRobert Mustacchi.Sh EXAMPLES
83fa9922c2SRobert MustacchiSee the
84fa9922c2SRobert Mustacchi.Sy EXAMPLES
85fa9922c2SRobert Mustacchisection in
86fa9922c2SRobert Mustacchi.Xr libavl 3LIB .
87fa9922c2SRobert Mustacchi.Sh INTERFACE STABILITY
88fa9922c2SRobert Mustacchi.Sy Committed
89fa9922c2SRobert Mustacchi.Sh MT-Level
90fa9922c2SRobert MustacchiSee
91fa9922c2SRobert Mustacchi.Sx Locking
92fa9922c2SRobert Mustacchiin
93fa9922c2SRobert Mustacchi.Xr libavl 3LIB .
94fa9922c2SRobert Mustacchi.Sh SEE ALSO
95*3a005aadSYuri Pankov.Xr avl_destroy 3AVL ,
96*3a005aadSYuri Pankov.Xr libavl 3LIB
97