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