xref: /titanic_53/usr/src/man/man3avl/avl_first.3avl (revision fa9922c2be34868be01989cef133828185b5c0bc)
1*fa9922c2SRobert Mustacchi.\"
2*fa9922c2SRobert Mustacchi.\" This file and its contents are supplied under the terms of the
3*fa9922c2SRobert Mustacchi.\" Common Development and Distribution License ("CDDL"), version 1.0.
4*fa9922c2SRobert Mustacchi.\" You may only use this file in accordance with the terms of version
5*fa9922c2SRobert Mustacchi.\" 1.0 of the CDDL.
6*fa9922c2SRobert Mustacchi.\"
7*fa9922c2SRobert Mustacchi.\" A full copy of the text of the CDDL should have accompanied this
8*fa9922c2SRobert Mustacchi.\" source.  A copy of the CDDL is also available via the Internet at
9*fa9922c2SRobert Mustacchi.\" http://www.illumos.org/license/CDDL.
10*fa9922c2SRobert Mustacchi.\"
11*fa9922c2SRobert Mustacchi.\"
12*fa9922c2SRobert Mustacchi.\" Copyright 2015 Joyent, Inc.
13*fa9922c2SRobert Mustacchi.\"
14*fa9922c2SRobert Mustacchi.Dd May 07, 2015
15*fa9922c2SRobert Mustacchi.Dt AVL_FIRST 3AVL
16*fa9922c2SRobert Mustacchi.Os
17*fa9922c2SRobert Mustacchi.Sh NAME
18*fa9922c2SRobert Mustacchi.Nm avl_first ,
19*fa9922c2SRobert Mustacchi.Nm AVL_NEXT ,
20*fa9922c2SRobert Mustacchi.Nm AVL_PREV ,
21*fa9922c2SRobert Mustacchi.Nm avl_last
22*fa9922c2SRobert Mustacchi.Nd get the first, next, previous, and last entries from an AVL tree
23*fa9922c2SRobert Mustacchi.Sh SYNOPSIS
24*fa9922c2SRobert Mustacchi.Lb libavl
25*fa9922c2SRobert Mustacchi.In sys/avl.h
26*fa9922c2SRobert Mustacchi.Ft void *
27*fa9922c2SRobert Mustacchi.Fo avl_first
28*fa9922c2SRobert Mustacchi.Fa "avl_tree_t *tree"
29*fa9922c2SRobert Mustacchi.Fc
30*fa9922c2SRobert Mustacchi.Ft void *
31*fa9922c2SRobert Mustacchi.Fo avl_last
32*fa9922c2SRobert Mustacchi.Fa "avl_tree_t *tree"
33*fa9922c2SRobert Mustacchi.Fc
34*fa9922c2SRobert Mustacchi.Ft void *
35*fa9922c2SRobert Mustacchi.Fo AVL_NEXT
36*fa9922c2SRobert Mustacchi.Fa "avl_tree_t *tree"
37*fa9922c2SRobert Mustacchi.Fa "void *node"
38*fa9922c2SRobert Mustacchi.Fc
39*fa9922c2SRobert Mustacchi.Ft void *
40*fa9922c2SRobert Mustacchi.Fo AVL_PREV
41*fa9922c2SRobert Mustacchi.Fa "avl_tree_t *tree"
42*fa9922c2SRobert Mustacchi.Fa "void *node"
43*fa9922c2SRobert Mustacchi.Fc
44*fa9922c2SRobert Mustacchi.Sh DESCRIPTION
45*fa9922c2SRobert MustacchiThe
46*fa9922c2SRobert Mustacchi.Fn avl_first
47*fa9922c2SRobert Mustacchiand
48*fa9922c2SRobert Mustacchi.Fn avl_last
49*fa9922c2SRobert Mustacchirespectively return the first and last entry in the tree specified by
50*fa9922c2SRobert Mustacchi.Fa tree .
51*fa9922c2SRobert MustacchiOrder in the tree is determined by the comparison function that was
52*fa9922c2SRobert Mustacchispecified at the time the tree was created with
53*fa9922c2SRobert Mustacchi.Xr avl_create 3AVL .
54*fa9922c2SRobert MustacchiIf
55*fa9922c2SRobert Mustacchi.Fa tree
56*fa9922c2SRobert Mustacchiis empty, then
57*fa9922c2SRobert Mustacchi.Fn avl_first
58*fa9922c2SRobert Mustacchiand
59*fa9922c2SRobert Mustacchi.Fn avl_last
60*fa9922c2SRobert Mustacchireturn
61*fa9922c2SRobert Mustacchi.Sy NULL .
62*fa9922c2SRobert Mustacchi.Pp
63*fa9922c2SRobert MustacchiThe
64*fa9922c2SRobert Mustacchi.Fn AVL_NEXT
65*fa9922c2SRobert Mustacchiand
66*fa9922c2SRobert Mustacchi.Fn AVL_PREV
67*fa9922c2SRobert Mustacchifunctions are macros that may be used to obtain the next and previous
68*fa9922c2SRobert Mustacchientry following
69*fa9922c2SRobert Mustacchi.Fa node
70*fa9922c2SRobert Mustacchiin the AVL tree
71*fa9922c2SRobert Mustacchi.Fa tree .
72*fa9922c2SRobert MustacchiIf there is no next or previous node, for example, if one was at the
73*fa9922c2SRobert Mustacchibeginning or end of the tree, then
74*fa9922c2SRobert Mustacchi.Sy NULL
75*fa9922c2SRobert Mustacchiis returned.
76*fa9922c2SRobert Mustacchi.Pp
77*fa9922c2SRobert MustacchiThese constructs are generally used as part of loops to iterate the
78*fa9922c2SRobert Mustacchitree. See the examples section in
79*fa9922c2SRobert Mustacchi.Xr libavl 3LIB
80*fa9922c2SRobert Mustacchifor more information on using this
81*fa9922c2SRobert Mustacchiinterface.
82*fa9922c2SRobert Mustacchi.Sh RETURN VALUES
83*fa9922c2SRobert MustacchiThe
84*fa9922c2SRobert Mustacchi.Fn avl_first
85*fa9922c2SRobert Mustacchifunction returns a pointer to the first entry in the AVL tree
86*fa9922c2SRobert Mustacchi.Fa tree
87*fa9922c2SRobert Mustacchior
88*fa9922c2SRobert Mustacchi.Sy NULL
89*fa9922c2SRobert Mustacchiif the AVL tree is empty.
90*fa9922c2SRobert Mustacchi.Pp
91*fa9922c2SRobert MustacchiThe
92*fa9922c2SRobert Mustacchi.Fn avl_last
93*fa9922c2SRobert Mustacchifunction returns a pointer to the last entry in the AVL tree
94*fa9922c2SRobert Mustacchi.Fa tree
95*fa9922c2SRobert Mustacchior
96*fa9922c2SRobert Mustacchi.Sy NULL
97*fa9922c2SRobert Mustacchiif the AVL tree is empty.
98*fa9922c2SRobert Mustacchi.Pp
99*fa9922c2SRobert MustacchiThe
100*fa9922c2SRobert Mustacchi.Fn AVL_NEXT
101*fa9922c2SRobert Mustacchimacro returns a pointer to the object in the tree that follows
102*fa9922c2SRobert Mustacchi.Fa node .
103*fa9922c2SRobert MustacchiIf
104*fa9922c2SRobert Mustacchi.Fa node
105*fa9922c2SRobert Mustacchiis the last entry in the tree,
106*fa9922c2SRobert Mustacchi.Sy NULL
107*fa9922c2SRobert Mustacchiis returned instead.
108*fa9922c2SRobert Mustacchi.Pp
109*fa9922c2SRobert MustacchiThe
110*fa9922c2SRobert Mustacchi.Fn AVL_PREV
111*fa9922c2SRobert Mustacchimacro returns a pointer to the object in the tree that precedes
112*fa9922c2SRobert Mustacchi.Fa node .
113*fa9922c2SRobert MustacchiIf
114*fa9922c2SRobert Mustacchi.Fa node
115*fa9922c2SRobert Mustacchiis the first entry in the tree,
116*fa9922c2SRobert Mustacchi.Sy NULL
117*fa9922c2SRobert Mustacchiis returned instead.
118*fa9922c2SRobert Mustacchi.Sh EXAMPLES
119*fa9922c2SRobert MustacchiSee the
120*fa9922c2SRobert Mustacchi.Sy EXAMPLES
121*fa9922c2SRobert Mustacchisection in
122*fa9922c2SRobert Mustacchi.Xr libavl 3LIB .
123*fa9922c2SRobert Mustacchi.Sh INTERFACE STABILITY
124*fa9922c2SRobert Mustacchi.Sy Committed
125*fa9922c2SRobert Mustacchi.Sh MT-Level
126*fa9922c2SRobert MustacchiSee
127*fa9922c2SRobert Mustacchi.Sx Locking
128*fa9922c2SRobert Mustacchiin
129*fa9922c2SRobert Mustacchi.Xr libavl 3LIB .
130*fa9922c2SRobert Mustacchi.Sh SEE ALSO
131*fa9922c2SRobert Mustacchi.Xr libavl 3LIB ,
132*fa9922c2SRobert Mustacchi.Xr avl_create 3AVL
133