14 #include <sys/cdefs.h>
15 #define _SEARCH_PRIVATE
24 int (*compar)(const
void *, const
void *);
27 node_t **rootp = (node_t **)vrootp;
32 while (*rootp !=
NULL) {
35 if ((r = (*compar)(vkey, (*rootp)->key)) == 0)
43 q = malloc(
sizeof(node_t));
47 q->key = (
void *)vkey;
48 q->llink = q->rlink =
NULL;
58 int (*compar)(const
void *, const
void *);
60 node_t **rootp = (node_t **)vrootp;
65 while (*rootp !=
NULL) {
68 if ((r = (*compar)(vkey, (*rootp)->key)) == 0)
85 tdelete(
const void * __restrict vkey,
void ** __restrict vrootp,
86 int (*compar)(
const void *,
const void *))
88 node_t **rootp = (node_t **)vrootp;
92 if (rootp ==
NULL || (p = *rootp) ==
NULL)
95 while ((cmp = (*compar)(vkey, (*rootp)->key)) != 0) {
104 if ((q = (*rootp)->llink) ==
NULL)
106 else if (r !=
NULL) {
107 if (r->llink ==
NULL) {
111 for (q = r->llink; q->llink !=
NULL; q = r->llink)
114 q->llink = (*rootp)->llink;
115 q->rlink = (*rootp)->rlink;
void * tdelete(const void *__restrict vkey, void **__restrict vrootp, int(*compar)(const void *, const void *))
void * tfind(void *vkey, void *const *vrootp, int *compar) const
void * tsearch(void *vkey, void **vrootp, int *compar) const