search.h revision 104399
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: head/include/search.h 104399 2002-10-03 06:31:16Z mike $ 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; 4162321Salfred#endif 4262321Salfred 4362321Salfred__BEGIN_DECLS 4493032Simpint hcreate(size_t); 4593032Simpvoid hdestroy(void); 4693032SimpENTRY *hsearch(ENTRY, ACTION); 47103012Stjrvoid *tdelete(const void * __restrict, void ** __restrict, 48101882Srobert int (*)(const void *, const void *)); 49104399Smikevoid *tfind(const void *, void * const *, 50104399Smike int (*)(const void *, const void *)); 5193032Simpvoid *tsearch(const void *, void **, int (*)(const void *, const void *)); 52104399Smikevoid twalk(const void *, void (*)(const void *, VISIT, int)); 53104399Smike/* 54104399Smike * XXX missing insque(), lsearch(), remque(). 55104399Smike */ 5662321Salfred__END_DECLS 5762321Salfred 5862321Salfred#endif /* !_SEARCH_H_ */ 59