15 #include <sys/cdefs.h>
17 #define _SEARCH_PRIVATE
26 int (*compar)(const
void *, const
void *);
29 node_t **rootp = (node_t **)vrootp;
34 while (*rootp !=
NULL) {
37 if ((r = (*compar)(vkey, (*rootp)->key)) == 0)
45 q = malloc(
sizeof(node_t));
49 q->key = (
void *)vkey;
50 q->llink = q->rlink =
NULL;
60 int (*compar)(const
void *, const
void *);
62 node_t **rootp = (node_t **)vrootp;
67 while (*rootp !=
NULL) {
70 if ((r = (*compar)(vkey, (*rootp)->key)) == 0)
87 tdelete(
const void * __restrict vkey,
void ** __restrict vrootp,
88 int (*compar)(
const void *,
const void *))
90 node_t **rootp = (node_t **)vrootp;
94 if (rootp ==
NULL || (p = *rootp) ==
NULL)
97 while ((cmp = (*compar)(vkey, (*rootp)->key)) != 0) {
106 if ((q = (*rootp)->llink) ==
NULL)
108 else if (r !=
NULL) {
109 if (r->llink ==
NULL) {
113 for (q = r->llink; q->llink !=
NULL; q = r->llink)
116 q->llink = (*rootp)->llink;
117 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