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