diff options
Diffstat (limited to 'misc/search.h')
-rw-r--r-- | misc/search.h | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/misc/search.h b/misc/search.h index 8ce33515d9..ff0672d39d 100644 --- a/misc/search.h +++ b/misc/search.h @@ -106,16 +106,21 @@ typedef enum } VISIT; +/* Search for an entry matching the given KEY in the tree pointed to + by *ROOTP and insert a new element if not found. */ extern void *tsearch __P ((__const void * __key, void **__rootp, __compar_fn_t compar)); extern void *__tsearch __P ((__const void * __key, void **__rootp, __compar_fn_t compar)); -extern void *tfind __P ((__const void * __key, __const void ** __rootp, +/* Search for an entry matching the given KEY in the tree pointed to + by *ROOTP. If no matching entry is available return NULL. */ +extern void *tfind __P ((__const void * __key, void *__const * __rootp, __compar_fn_t compar)); -extern void *__tfind __P ((__const void * __key, __const void ** __rootp, +extern void *__tfind __P ((__const void * __key, void *__const * __rootp, __compar_fn_t compar)); +/* Remove the element matching KEY from the tree pointed to by *ROOTP. */ extern void *tdelete __P ((__const void * __key, void ** __rootp, __compar_fn_t compar)); extern void *__tdelete __P ((__const void * __key, void ** __rootp, @@ -128,10 +133,22 @@ typedef void (*__action_fn_t) __P ((__const void *__nodep, int __level)); #endif +/* Walk through the whole tree and call the ACTION callback for every node + or leaf. */ extern void twalk __P ((__const void * __root, __action_fn_t action)); extern void __twalk __P ((__const void * __root, __action_fn_t action)); +#ifdef __USE_GNU +/* Callback type for function to free a tree node. If the keys are atomic + data this function should do nothing. */ +typedef void (*__free_fn_t) __P ((void *__nodep)); + +/* Destroy the whole tree, call FREEFCT for each node or leaf. */ +extern void __tdestroy __P ((void *__root, __free_fn_t freefct)); +extern void tdestroy __P ((void *__root, __free_fn_t freefct)); +#endif + /* Perform linear search for KEY by comparing by COMPAR in an array [BASE,BASE+NMEMB*SIZE). */ |