search.h revision 62321
162321Salfred/*	$NetBSD: search.h,v 1.12 1999/02/22 10:34:28 christos Exp $	*/
262321Salfred/* $FreeBSD: head/include/search.h 62321 2000-07-01 06:55:11Z alfred $ */
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>
1362321Salfred#include <machine/ansi.h>
1462321Salfred
1562321Salfred#ifdef	_BSD_SIZE_T_
1662321Salfredtypedef	_BSD_SIZE_T_	size_t;
1762321Salfred#undef	_BSD_SIZE_T_
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
4462321Salfredvoid	*bsearch __P((const void *, const void *, size_t, size_t,
4562321Salfred		      int (*)(const void *, const void *)));
4662321Salfredint	 hcreate __P((size_t));
4762321Salfredvoid	 hdestroy __P((void));
4862321SalfredENTRY	*hsearch __P((ENTRY, ACTION));
4962321Salfred
5062321Salfredvoid	*lfind __P((const void *, const void *, size_t *, size_t,
5162321Salfred		      int (*)(const void *, const void *)));
5262321Salfredvoid	*lsearch __P((const void *, const void *, size_t *, size_t,
5362321Salfred		      int (*)(const void *, const void *)));
5462321Salfredvoid	 insque __P((void *, void *));
5562321Salfredvoid	 remque __P((void *));
5662321Salfred
5762321Salfredvoid	*tdelete __P((const void *, void **,
5862321Salfred		      int (*)(const void *, const void *)));
5962321Salfredvoid	*tfind __P((const void *, void **,
6062321Salfred		      int (*)(const void *, const void *)));
6162321Salfredvoid	*tsearch __P((const void *, void **,
6262321Salfred		      int (*)(const void *, const void *)));
6362321Salfredvoid      twalk __P((const void *, void (*)(const void *, VISIT, int)));
6462321Salfred__END_DECLS
6562321Salfred
6662321Salfred#endif /* !_SEARCH_H_ */
67