search.h revision 62321
11558Srgrimes/* $NetBSD: search.h,v 1.12 1999/02/22 10:34:28 christos Exp $ */ 21558Srgrimes/* $FreeBSD: head/include/search.h 62321 2000-07-01 06:55:11Z alfred $ */ 31558Srgrimes 41558Srgrimes/* 51558Srgrimes * Written by J.T. Conklin <jtc@netbsd.org> 61558Srgrimes * Public domain. 71558Srgrimes */ 81558Srgrimes 91558Srgrimes#ifndef _SEARCH_H_ 101558Srgrimes#define _SEARCH_H_ 111558Srgrimes 121558Srgrimes#include <sys/cdefs.h> 131558Srgrimes#include <machine/ansi.h> 141558Srgrimes 151558Srgrimes#ifdef _BSD_SIZE_T_ 161558Srgrimestypedef _BSD_SIZE_T_ size_t; 171558Srgrimes#undef _BSD_SIZE_T_ 181558Srgrimes#endif 191558Srgrimes 201558Srgrimestypedef struct entry { 211558Srgrimes char *key; 221558Srgrimes void *data; 231558Srgrimes} ENTRY; 241558Srgrimes 251558Srgrimestypedef enum { 261558Srgrimes FIND, ENTER 271558Srgrimes} ACTION; 281558Srgrimes 291558Srgrimestypedef enum { 30114589Sobrien preorder, 311558Srgrimes postorder, 3223675Speter endorder, 33114589Sobrien leaf 3441477Sjulian} VISIT; 35114589Sobrien 36114589Sobrien#ifdef _SEARCH_PRIVATE 371558Srgrimestypedef struct node { 381558Srgrimes char *key; 391558Srgrimes struct node *llink, *rlink; 40101994Sbmilekic} node_t; 411558Srgrimes#endif 421558Srgrimes 4386514Siedowse__BEGIN_DECLS 4423675Spetervoid *bsearch __P((const void *, const void *, size_t, size_t, 4523675Speter int (*)(const void *, const void *))); 4623675Speterint hcreate __P((size_t)); 4723675Spetervoid hdestroy __P((void)); 4823675SpeterENTRY *hsearch __P((ENTRY, ACTION)); 4923675Speter 501558Srgrimesvoid *lfind __P((const void *, const void *, size_t *, size_t, 51103949Smike int (*)(const void *, const void *))); 52101037Smuxvoid *lsearch __P((const void *, const void *, size_t *, size_t, 531558Srgrimes int (*)(const void *, const void *))); 5423675Spetervoid insque __P((void *, void *)); 551558Srgrimesvoid remque __P((void *)); 561558Srgrimes 571558Srgrimesvoid *tdelete __P((const void *, void **, 581558Srgrimes int (*)(const void *, const void *))); 591558Srgrimesvoid *tfind __P((const void *, void **, 601558Srgrimes int (*)(const void *, const void *))); 61100935Sphkvoid *tsearch __P((const void *, void **, 6292839Simp int (*)(const void *, const void *))); 6392839Simpvoid twalk __P((const void *, void (*)(const void *, VISIT, int))); 641558Srgrimes__END_DECLS 6523675Speter 6623675Speter#endif /* !_SEARCH_H_ */ 67102231Strhodes