1: /* $NetBSD: search.h,v 1.12 1999/02/22 10:34:28 christos Exp $ */ 2: /* $FreeBSD: src/include/search.h,v 1.4 2002/03/23 17:24:53 imp Exp $ */ 3: 4: /* 5: * Written by J.T. Conklin <jtc@netbsd.org> 6: * Public domain. 7: */ 8: 9: #ifndef _SEARCH_H_ 10: #define _SEARCH_H_ 11: 12: #include <sys/cdefs.h> 13: #include <machine/ansi.h> 14: #include <sys/types.h> 15: 16: typedef struct entry { 17: char *key; 18: void *data; 19: } ENTRY; 20: 21: typedef enum { 22: FIND, ENTER 23: } ACTION; 24: 25: typedef enum { 26: preorder, 27: postorder, 28: endorder, 29: leaf 30: } VISIT; 31: 32: #ifdef _SEARCH_PRIVATE 33: typedef struct node { 34: char *key; 35: struct node *llink, *rlink; 36: } node_t; 37: #endif 38: 39: struct hsearch_data 40: { 41: struct internal_head *htable; 42: size_t htablesize; 43: }; 44: 45: __BEGIN_DECLS 46: int hcreate(size_t); 47: void hdestroy(void); 48: ENTRY *hsearch(ENTRY, ACTION); 49: int hcreate_r(size_t, struct hsearch_data *); 50: void hdestroy_r(struct hsearch_data *); 51: int hsearch_r(ENTRY, ACTION, ENTRY **, struct hsearch_data *); 52: void *tdelete(const void *, void **, int (*)(const void *, const void *)); 53: void tdestroy (void *, void (*)(void *)); 54: void *tfind(const void *, void **, int (*)(const void *, const void *)); 55: void *tsearch(const void *, void **, int (*)(const void *, const void *)); 56: void twalk(const void *, void (*)(const void *, VISIT, int)); 57: __END_DECLS 58: 59: #endif /* !_SEARCH_H_ */ 60: