#ifndef _SEARCH_H #define _SEARCH_H // TODO: cplusplus, xopensource,.. #define __NEED_size_t #include typedef enum { FIND, ENTER } ACTION; typedef enum { preorder, postorder, endorder, leaf } VISIT; typedef struct { char *key; void *data; } ENTRY; int hcreate(size_t nel); void hdestroy(void); ENTRY *hsearch(ENTRY item, ACTION action); void insque(void *element, void *pred); void remque(void *element); void *lsearch(const void *key, void *base, size_t *nelp, size_t width, int (*compar)(const void *, const void *)); void *lfind(const void *key, const void *base, size_t *nelp, size_t width, int (*compar)(const void *, const void *)); void *tdelete(const void *restrict key, void **restrict rootp, int(*compar)(const void *, const void *)); void *tfind(const void *key, void *const *rootp, int(*compar)(const void *, const void *)); void *tsearch(const void *key, void **rootp, int (*compar)(const void *, const void *)); void twalk(const void *root, void (*action)(const void *, VISIT, int)); #endif