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