remove dependency of wmemmove on wmemcpy direction
[musl] / include / search.h
1 #ifndef _SEARCH_H
2 #define _SEARCH_H
3
4 #ifdef __cplusplus
5 extern "C" {
6 #endif
7
8 #define __NEED_size_t
9 #include <bits/alltypes.h>
10
11 typedef enum { FIND, ENTER } ACTION;
12 typedef enum { preorder, postorder, endorder, leaf } VISIT;
13
14 typedef struct {
15         char *key;
16         void *data;
17 } ENTRY;
18
19 int hcreate(size_t);
20 void hdestroy(void);
21 ENTRY *hsearch(ENTRY, ACTION);
22
23 void insque(void *, void *);
24 void remque(void *);
25
26 void *lsearch(const void *, void *, size_t *, size_t,
27         int (*)(const void *, const void *));
28 void *lfind(const void *, const void *, size_t *, size_t,
29         int (*)(const void *, const void *));
30
31 void *tdelete(const void *, void **, int(*)(const void *, const void *));
32 void *tfind(const void *, void *const *, int(*)(const void *, const void *));
33 void *tsearch(const void *, void **, int (*)(const void *, const void *));
34 void twalk(const void *, void (*)(const void *, VISIT, int));
35
36 #ifdef _GNU_SOURCE
37 struct qelem {
38         struct qelem *q_forw, *q_back;
39         char q_data[1];
40 };
41
42 void tdestroy(void *, void (*)(void *));
43 #endif
44
45 #ifdef __cplusplus
46 }
47 #endif
48
49 #endif