1*177a7427Smatthew /* $OpenBSD: search.h,v 1.10 2014/07/18 04:16:09 matthew Exp $ */ 2df930be7Sderaadt /* $NetBSD: search.h,v 1.9 1995/08/08 21:14:45 jtc Exp $ */ 3df930be7Sderaadt 4df930be7Sderaadt /* 5df930be7Sderaadt * Written by J.T. Conklin <jtc@netbsd.org> 6df930be7Sderaadt * Public domain. 7df930be7Sderaadt */ 8df930be7Sderaadt 9df930be7Sderaadt #ifndef _SEARCH_H_ 10df930be7Sderaadt #define _SEARCH_H_ 1117648193Smillert 12df930be7Sderaadt #include <sys/cdefs.h> 13c916d948Smillert #include <machine/_types.h> 14df930be7Sderaadt 15c916d948Smillert #ifndef _SIZE_T_DEFINED_ 16c916d948Smillert #define _SIZE_T_DEFINED_ 17c916d948Smillert typedef __size_t size_t; 18df930be7Sderaadt #endif 19df930be7Sderaadt 20df930be7Sderaadt typedef struct entry { 21df930be7Sderaadt char *key; 2217648193Smillert void *data; 23df930be7Sderaadt } ENTRY; 24df930be7Sderaadt 25df930be7Sderaadt typedef enum { 26df930be7Sderaadt FIND, ENTER 27df930be7Sderaadt } ACTION; 28df930be7Sderaadt 29df930be7Sderaadt typedef enum { 30df930be7Sderaadt preorder, 31df930be7Sderaadt postorder, 32df930be7Sderaadt endorder, 33df930be7Sderaadt leaf 34df930be7Sderaadt } VISIT; 35df930be7Sderaadt 36df930be7Sderaadt __BEGIN_DECLS 3717648193Smillert int hcreate(size_t); 3817648193Smillert void hdestroy(void); 3917648193Smillert ENTRY *hsearch(ENTRY, ACTION); 40df930be7Sderaadt 4117648193Smillert void *lfind(const void *, const void *, size_t *, size_t, 42f3c3a9c6Smillert int (*)(const void *, const void *)); 43*177a7427Smatthew void *lsearch(const void *, void *, size_t *, size_t, 44f3c3a9c6Smillert int (*)(const void *, const void *)); 4517648193Smillert void insque(void *, void *); 4617648193Smillert void remque(void *); 47df930be7Sderaadt 48caad5576Sguenther void *tdelete(const void * __restrict, void ** __restrict, 49f3c3a9c6Smillert int (*)(const void *, const void *)); 5017648193Smillert void *tfind(const void *, void * const *, 51f3c3a9c6Smillert int (*)(const void *, const void *)); 5217648193Smillert void *tsearch(const void *, void **, 53f3c3a9c6Smillert int (*)(const void *, const void *)); 5417648193Smillert void twalk(const void *, void (*)(const void *, VISIT, int)); 55df930be7Sderaadt __END_DECLS 56df930be7Sderaadt 5717648193Smillert #endif /* !_SEARCH_H_ */ 58