search.h revision 101882
1285612Sdelphij/* $NetBSD: search.h,v 1.12 1999/02/22 10:34:28 christos Exp $ */ 254359Sroberto/* $FreeBSD: head/include/search.h 101882 2002-08-14 21:16:41Z robert $ */ 354359Sroberto 454359Sroberto/* 554359Sroberto * Written by J.T. Conklin <jtc@netbsd.org> 654359Sroberto * Public domain. 754359Sroberto */ 8285612Sdelphij 9285612Sdelphij#ifndef _SEARCH_H_ 10285612Sdelphij#define _SEARCH_H_ 11285612Sdelphij 12285612Sdelphij#include <sys/cdefs.h> 13285612Sdelphij#include <machine/ansi.h> 14285612Sdelphij 15285612Sdelphij#ifdef _BSD_SIZE_T_ 1654359Srobertotypedef _BSD_SIZE_T_ size_t; 1754359Sroberto#undef _BSD_SIZE_T_ 1854359Sroberto#endif 1954359Sroberto 2054359Srobertotypedef struct entry { 2154359Sroberto char *key; 22285612Sdelphij void *data; 23285612Sdelphij} ENTRY; 2454359Sroberto 2554359Srobertotypedef enum { 26285612Sdelphij FIND, ENTER 27285612Sdelphij} ACTION; 2854359Sroberto 2954359Srobertotypedef enum { 30285612Sdelphij preorder, 31285612Sdelphij postorder, 32285612Sdelphij endorder, 3354359Sroberto leaf 34285612Sdelphij} VISIT; 35285612Sdelphij 3654359Sroberto#ifdef _SEARCH_PRIVATE 37285612Sdelphijtypedef struct node { 3854359Sroberto char *key; 3954359Sroberto struct node *llink, *rlink; 4054359Sroberto} node_t; 4154359Sroberto#endif 4254359Sroberto 43__BEGIN_DECLS 44int hcreate(size_t); 45void hdestroy(void); 46ENTRY *hsearch(ENTRY, ACTION); 47void *tdelete(const void *__restrict, void **__restrict, 48 int (*)(const void *, const void *)); 49void *tfind(const void *, void **, int (*)(const void *, const void *)); 50void *tsearch(const void *, void **, int (*)(const void *, const void *)); 51void twalk(const void *, void (*)(const void *, VISIT, int)); 52__END_DECLS 53 54#endif /* !_SEARCH_H_ */ 55