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