You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
62 lines
1.4 KiB
62 lines
1.4 KiB
4 months ago
|
#ifndef SYSROOT_SEARCH_H_
|
||
|
#define SYSROOT_SEARCH_H_
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
extern "C" {
|
||
|
#endif
|
||
|
|
||
|
#include <features.h>
|
||
|
|
||
|
#define __NEED_size_t
|
||
|
#include <bits/alltypes.h>
|
||
|
|
||
|
typedef enum { FIND, ENTER } ACTION;
|
||
|
typedef enum { preorder, postorder, endorder, leaf } VISIT;
|
||
|
|
||
|
typedef struct entry {
|
||
|
char* key;
|
||
|
void* data;
|
||
|
} ENTRY;
|
||
|
|
||
|
int hcreate(size_t);
|
||
|
void hdestroy(void);
|
||
|
ENTRY* hsearch(ENTRY, ACTION);
|
||
|
|
||
|
#ifdef _GNU_SOURCE
|
||
|
struct hsearch_data {
|
||
|
struct __tab* __tab;
|
||
|
unsigned int __unused1;
|
||
|
unsigned int __unused2;
|
||
|
};
|
||
|
|
||
|
int hcreate_r(size_t, struct hsearch_data*);
|
||
|
void hdestroy_r(struct hsearch_data*);
|
||
|
int hsearch_r(ENTRY, ACTION, ENTRY**, struct hsearch_data*);
|
||
|
#endif
|
||
|
|
||
|
void insque(void*, void*);
|
||
|
void remque(void*);
|
||
|
|
||
|
void* lsearch(const void*, void*, size_t*, size_t, int (*)(const void*, const void*));
|
||
|
void* lfind(const void*, const void*, size_t*, size_t, int (*)(const void*, const void*));
|
||
|
|
||
|
void* tdelete(const void* __restrict, void** __restrict, int (*)(const void*, const void*));
|
||
|
void* tfind(const void*, void* const*, int (*)(const void*, const void*));
|
||
|
void* tsearch(const void*, void**, int (*)(const void*, const void*));
|
||
|
void twalk(const void*, void (*)(const void*, VISIT, int));
|
||
|
|
||
|
#ifdef _GNU_SOURCE
|
||
|
struct qelem {
|
||
|
struct qelem *q_forw, *q_back;
|
||
|
char q_data[1];
|
||
|
};
|
||
|
|
||
|
void tdestroy(void*, void (*)(void*));
|
||
|
#endif
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
}
|
||
|
#endif
|
||
|
|
||
|
#endif // SYSROOT_SEARCH_H_
|