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