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