xref: /aosp_15_r20/external/musl/include/search.h (revision c9945492fdd68bbe62686c5b452b4dc1be3f8453)
1*c9945492SAndroid Build Coastguard Worker #ifndef _SEARCH_H
2*c9945492SAndroid Build Coastguard Worker #define _SEARCH_H
3*c9945492SAndroid Build Coastguard Worker 
4*c9945492SAndroid Build Coastguard Worker #ifdef __cplusplus
5*c9945492SAndroid Build Coastguard Worker extern "C" {
6*c9945492SAndroid Build Coastguard Worker #endif
7*c9945492SAndroid Build Coastguard Worker 
8*c9945492SAndroid Build Coastguard Worker #include <features.h>
9*c9945492SAndroid Build Coastguard Worker 
10*c9945492SAndroid Build Coastguard Worker #define __NEED_size_t
11*c9945492SAndroid Build Coastguard Worker #include <bits/alltypes.h>
12*c9945492SAndroid Build Coastguard Worker 
13*c9945492SAndroid Build Coastguard Worker typedef enum { FIND, ENTER } ACTION;
14*c9945492SAndroid Build Coastguard Worker typedef enum { preorder, postorder, endorder, leaf } VISIT;
15*c9945492SAndroid Build Coastguard Worker 
16*c9945492SAndroid Build Coastguard Worker typedef struct entry {
17*c9945492SAndroid Build Coastguard Worker 	char *key;
18*c9945492SAndroid Build Coastguard Worker 	void *data;
19*c9945492SAndroid Build Coastguard Worker } ENTRY;
20*c9945492SAndroid Build Coastguard Worker 
21*c9945492SAndroid Build Coastguard Worker int hcreate(size_t);
22*c9945492SAndroid Build Coastguard Worker void hdestroy(void);
23*c9945492SAndroid Build Coastguard Worker ENTRY *hsearch(ENTRY, ACTION);
24*c9945492SAndroid Build Coastguard Worker 
25*c9945492SAndroid Build Coastguard Worker #ifdef _GNU_SOURCE
26*c9945492SAndroid Build Coastguard Worker struct hsearch_data {
27*c9945492SAndroid Build Coastguard Worker 	struct __tab *__tab;
28*c9945492SAndroid Build Coastguard Worker 	unsigned int __unused1;
29*c9945492SAndroid Build Coastguard Worker 	unsigned int __unused2;
30*c9945492SAndroid Build Coastguard Worker };
31*c9945492SAndroid Build Coastguard Worker 
32*c9945492SAndroid Build Coastguard Worker int hcreate_r(size_t, struct hsearch_data *);
33*c9945492SAndroid Build Coastguard Worker void hdestroy_r(struct hsearch_data *);
34*c9945492SAndroid Build Coastguard Worker int hsearch_r(ENTRY, ACTION, ENTRY **, struct hsearch_data *);
35*c9945492SAndroid Build Coastguard Worker #endif
36*c9945492SAndroid Build Coastguard Worker 
37*c9945492SAndroid Build Coastguard Worker void insque(void *, void *);
38*c9945492SAndroid Build Coastguard Worker void remque(void *);
39*c9945492SAndroid Build Coastguard Worker 
40*c9945492SAndroid Build Coastguard Worker void *lsearch(const void *, void *, size_t *, size_t,
41*c9945492SAndroid Build Coastguard Worker 	int (*)(const void *, const void *));
42*c9945492SAndroid Build Coastguard Worker void *lfind(const void *, const void *, size_t *, size_t,
43*c9945492SAndroid Build Coastguard Worker 	int (*)(const void *, const void *));
44*c9945492SAndroid Build Coastguard Worker 
45*c9945492SAndroid Build Coastguard Worker void *tdelete(const void *__restrict, void **__restrict, int(*)(const void *, const void *));
46*c9945492SAndroid Build Coastguard Worker void *tfind(const void *, void *const *, int(*)(const void *, const void *));
47*c9945492SAndroid Build Coastguard Worker void *tsearch(const void *, void **, int (*)(const void *, const void *));
48*c9945492SAndroid Build Coastguard Worker void twalk(const void *, void (*)(const void *, VISIT, int));
49*c9945492SAndroid Build Coastguard Worker 
50*c9945492SAndroid Build Coastguard Worker #ifdef _GNU_SOURCE
51*c9945492SAndroid Build Coastguard Worker struct qelem {
52*c9945492SAndroid Build Coastguard Worker 	struct qelem *q_forw, *q_back;
53*c9945492SAndroid Build Coastguard Worker 	char q_data[1];
54*c9945492SAndroid Build Coastguard Worker };
55*c9945492SAndroid Build Coastguard Worker 
56*c9945492SAndroid Build Coastguard Worker void tdestroy(void *, void (*)(void *));
57*c9945492SAndroid Build Coastguard Worker #endif
58*c9945492SAndroid Build Coastguard Worker 
59*c9945492SAndroid Build Coastguard Worker #ifdef __cplusplus
60*c9945492SAndroid Build Coastguard Worker }
61*c9945492SAndroid Build Coastguard Worker #endif
62*c9945492SAndroid Build Coastguard Worker 
63*c9945492SAndroid Build Coastguard Worker #endif
64