1104399Smike/*- 262321Salfred * Written by J.T. Conklin <jtc@netbsd.org> 362321Salfred * Public domain. 4104399Smike * 5104399Smike * $NetBSD: search.h,v 1.12 1999/02/22 10:34:28 christos Exp $ 6104399Smike * $FreeBSD$ 762321Salfred */ 862321Salfred 962321Salfred#ifndef _SEARCH_H_ 1062321Salfred#define _SEARCH_H_ 1162321Salfred 1262321Salfred#include <sys/cdefs.h> 13102227Smike#include <sys/_types.h> 1462321Salfred 15102227Smike#ifndef _SIZE_T_DECLARED 16102227Smiketypedef __size_t size_t; 17102227Smike#define _SIZE_T_DECLARED 1862321Salfred#endif 1962321Salfred 20104399Smiketypedef struct entry { 21104399Smike char *key; 22104399Smike void *data; 2362321Salfred} ENTRY; 2462321Salfred 25104399Smiketypedef enum { 2662321Salfred FIND, ENTER 2762321Salfred} ACTION; 2862321Salfred 29104399Smiketypedef enum { 3062321Salfred preorder, 3162321Salfred postorder, 3262321Salfred endorder, 3362321Salfred leaf 3462321Salfred} VISIT; 3562321Salfred 3662321Salfred#ifdef _SEARCH_PRIVATE 37104399Smiketypedef struct node { 3862321Salfred char *key; 3962321Salfred struct node *llink, *rlink; 4062321Salfred} node_t; 41105245Srobert 42105245Srobertstruct que_elem { 43105245Srobert struct que_elem *next; 44105245Srobert struct que_elem *prev; 45105245Srobert}; 4662321Salfred#endif 4762321Salfred 4862321Salfred__BEGIN_DECLS 4993032Simpint hcreate(size_t); 5093032Simpvoid hdestroy(void); 5193032SimpENTRY *hsearch(ENTRY, ACTION); 52105245Srobertvoid insque(void *, void *); 53105250Srobertvoid *lfind(const void *, const void *, size_t *, size_t, 54105250Srobert int (*)(const void *, const void *)); 55105250Srobertvoid *lsearch(const void *, void *, size_t *, size_t, 56105250Srobert int (*)(const void *, const void *)); 57105245Srobertvoid remque(void *); 58103012Stjrvoid *tdelete(const void * __restrict, void ** __restrict, 59101882Srobert int (*)(const void *, const void *)); 60104399Smikevoid *tfind(const void *, void * const *, 61104399Smike int (*)(const void *, const void *)); 6293032Simpvoid *tsearch(const void *, void **, int (*)(const void *, const void *)); 63104399Smikevoid twalk(const void *, void (*)(const void *, VISIT, int)); 6462321Salfred__END_DECLS 6562321Salfred 6662321Salfred#endif /* !_SEARCH_H_ */ 67