search.h revision 103012
162321Salfred/* $NetBSD: search.h,v 1.12 1999/02/22 10:34:28 christos Exp $ */ 262321Salfred/* $FreeBSD: head/include/search.h 103012 2002-09-06 11:24:06Z tjr $ */ 362321Salfred 462321Salfred/* 562321Salfred * Written by J.T. Conklin <jtc@netbsd.org> 662321Salfred * Public domain. 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 2062321Salfredtypedef struct entry { 2162321Salfred char *key; 2262321Salfred void *data; 2362321Salfred} ENTRY; 2462321Salfred 2562321Salfredtypedef enum { 2662321Salfred FIND, ENTER 2762321Salfred} ACTION; 2862321Salfred 2962321Salfredtypedef enum { 3062321Salfred preorder, 3162321Salfred postorder, 3262321Salfred endorder, 3362321Salfred leaf 3462321Salfred} VISIT; 3562321Salfred 3662321Salfred#ifdef _SEARCH_PRIVATE 3762321Salfredtypedef 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 *)); 4993032Simpvoid *tfind(const void *, void **, int (*)(const void *, const void *)); 5093032Simpvoid *tsearch(const void *, void **, int (*)(const void *, const void *)); 5193032Simpvoid twalk(const void *, void (*)(const void *, VISIT, int)); 5262321Salfred__END_DECLS 5362321Salfred 5462321Salfred#endif /* !_SEARCH_H_ */ 55