1/* $OpenBSD: search.h,v 1.10 2014/07/18 04:16:09 matthew Exp $ */ 2/* $NetBSD: search.h,v 1.9 1995/08/08 21:14:45 jtc 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/_types.h> 14 15#ifndef _SIZE_T_DEFINED_ 16#define _SIZE_T_DEFINED_ 17typedef __size_t size_t; 18#endif 19 20typedef struct entry { 21 char *key; 22 void *data; 23} ENTRY; 24 25typedef enum { 26 FIND, ENTER 27} ACTION; 28 29typedef enum { 30 preorder, 31 postorder, 32 endorder, 33 leaf 34} VISIT; 35 36__BEGIN_DECLS 37int hcreate(size_t); 38void hdestroy(void); 39ENTRY *hsearch(ENTRY, ACTION); 40 41void *lfind(const void *, const void *, size_t *, size_t, 42 int (*)(const void *, const void *)); 43void *lsearch(const void *, void *, size_t *, size_t, 44 int (*)(const void *, const void *)); 45void insque(void *, void *); 46void remque(void *); 47 48void *tdelete(const void * __restrict, void ** __restrict, 49 int (*)(const void *, const void *)); 50void *tfind(const void *, void * const *, 51 int (*)(const void *, const void *)); 52void *tsearch(const void *, void **, 53 int (*)(const void *, const void *)); 54void twalk(const void *, void (*)(const void *, VISIT, int)); 55__END_DECLS 56 57#endif /* !_SEARCH_H_ */ 58