1 /** $MirOS: src/include/search.h,v 1.2 2005/11/21 19:31:53 tg Exp $ */ 2 /* $OpenBSD: search.h,v 1.7 2004/07/08 21:15:11 millert Exp $ */ 3 /* $NetBSD: search.h,v 1.9 1995/08/08 21:14:45 jtc Exp $ */ 4 5 /* 6 * Written by J.T. Conklin <jtc@netbsd.org> 7 * Public domain. 8 */ 9 10 #ifndef _SEARCH_H_ 11 #define _SEARCH_H_ 12 13 #include <sys/cdefs.h> 14 #include <machine/ansi.h> 15 16 #if !defined(_GCC_SIZE_T) 17 #define _GCC_SIZE_T 18 typedef __SIZE_TYPE__ size_t; 19 #endif 20 21 typedef struct entry { 22 char *key; 23 void *data; 24 } ENTRY; 25 26 typedef enum { 27 FIND, ENTER 28 } ACTION; 29 30 typedef enum { 31 preorder, 32 postorder, 33 endorder, 34 leaf 35 } VISIT; 36 37 __BEGIN_DECLS 38 void *bsearch(const void *, const void *, size_t, size_t, 39 int (*)(const void *, const void *)); 40 int hcreate(size_t); 41 void hdestroy(void); 42 ENTRY *hsearch(ENTRY, ACTION); 43 44 void *lfind(const void *, const void *, size_t *, size_t, 45 int (*)(const void *, const void *)); 46 void *lsearch(const void *, const void *, size_t *, size_t, 47 int (*)(const void *, const void *)); 48 void insque(void *, void *); 49 void remque(void *); 50 51 void *tdelete(const void *, void **, 52 int (*)(const void *, const void *)); 53 void *tfind(const void *, void * const *, 54 int (*)(const void *, const void *)); 55 void *tsearch(const void *, void **, 56 int (*)(const void *, const void *)); 57 void twalk(const void *, void (*)(const void *, VISIT, int)); 58 __END_DECLS 59 60 #endif /* !_SEARCH_H_ */ 61