123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- #ifndef _SEARCH_H
- #define _SEARCH_H
- #ifdef __cplusplus
- extern "C" {
- #endif
- #include <features.h>
- #define __NEED_size_t
- #include <bits/alltypes.h>
- typedef enum { FIND, ENTER } ACTION;
- typedef enum { preorder, postorder, endorder, leaf } VISIT;
- typedef struct entry {
- char *key;
- void *data;
- } ENTRY;
- int hcreate(size_t);
- void hdestroy(void);
- ENTRY *hsearch(ENTRY, ACTION);
- #ifdef _GNU_SOURCE
- struct hsearch_data {
- struct __tab *__tab;
- unsigned int __unused1;
- unsigned int __unused2;
- };
- int hcreate_r(size_t, struct hsearch_data *);
- void hdestroy_r(struct hsearch_data *);
- int hsearch_r(ENTRY, ACTION, ENTRY **, struct hsearch_data *);
- #endif
- void insque(void *, void *);
- void remque(void *);
- void *lsearch(const void *, void *, size_t *, size_t,
- int (*)(const void *, const void *));
- void *lfind(const void *, const void *, size_t *, size_t,
- int (*)(const void *, const void *));
- void *tdelete(const void *__restrict, void **__restrict, int(*)(const void *, const void *));
- void *tfind(const void *, void *const *, int(*)(const void *, const void *));
- void *tsearch(const void *, void **, int (*)(const void *, const void *));
- void twalk(const void *, void (*)(const void *, VISIT, int));
- #ifdef _GNU_SOURCE
- struct qelem {
- struct qelem *q_forw, *q_back;
- char q_data[1];
- };
- void tdestroy(void *, void (*)(void *));
- #endif
- #ifdef __cplusplus
- }
- #endif
- #endif
|