search.h revision 104399
1172998Speter/*- 2172998Speter * Written by J.T. Conklin <jtc@netbsd.org> 3172998Speter * Public domain. 4172998Speter * 5172998Speter * $NetBSD: search.h,v 1.12 1999/02/22 10:34:28 christos Exp $ 6172998Speter * $FreeBSD: head/include/search.h 104399 2002-10-03 06:31:16Z mike $ 7172998Speter */ 8172998Speter 9172998Speter#ifndef _SEARCH_H_ 10172998Speter#define _SEARCH_H_ 11172998Speter 12172998Speter#include <sys/cdefs.h> 13172998Speter#include <sys/_types.h> 14172998Speter 15172998Speter#ifndef _SIZE_T_DECLARED 16172998Spetertypedef __size_t size_t; 17172998Speter#define _SIZE_T_DECLARED 18172998Speter#endif 19172998Speter 20172998Spetertypedef struct entry { 21172998Speter char *key; 22172998Speter void *data; 23172998Speter} ENTRY; 24172998Speter 25172998Spetertypedef enum { 26172998Speter FIND, ENTER 27172998Speter} ACTION; 28172998Speter 29172998Spetertypedef enum { 30172998Speter preorder, 31172998Speter postorder, 32172998Speter endorder, 33172998Speter leaf 34181132Sjhb} VISIT; 35172998Speter 36181132Sjhb#ifdef _SEARCH_PRIVATE 37172998Spetertypedef struct node { 38172998Speter char *key; 39172998Speter struct node *llink, *rlink; 40172998Speter} node_t; 41172998Speter#endif 42172998Speter 43172998Speter__BEGIN_DECLS 44172998Speterint hcreate(size_t); 45172998Spetervoid hdestroy(void); 46172998SpeterENTRY *hsearch(ENTRY, ACTION); 47172998Spetervoid *tdelete(const void * __restrict, void ** __restrict, 48172998Speter int (*)(const void *, const void *)); 49172998Spetervoid *tfind(const void *, void * const *, 50172998Speter int (*)(const void *, const void *)); 51172998Spetervoid *tsearch(const void *, void **, int (*)(const void *, const void *)); 52172998Spetervoid twalk(const void *, void (*)(const void *, VISIT, int)); 53172998Speter/* 54172998Speter * XXX missing insque(), lsearch(), remque(). 55172998Speter */ 56172998Speter__END_DECLS 57172998Speter 58172998Speter#endif /* !_SEARCH_H_ */ 59172998Speter