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