search.h revision 104399
1104399Smike/*-
262321Salfred * Written by J.T. Conklin <jtc@netbsd.org>
362321Salfred * Public domain.
4104399Smike *
5104399Smike *	$NetBSD: search.h,v 1.12 1999/02/22 10:34:28 christos Exp $
6104399Smike * $FreeBSD: head/include/search.h 104399 2002-10-03 06:31:16Z mike $
762321Salfred */
862321Salfred
962321Salfred#ifndef _SEARCH_H_
1062321Salfred#define _SEARCH_H_
1162321Salfred
1262321Salfred#include <sys/cdefs.h>
13102227Smike#include <sys/_types.h>
1462321Salfred
15102227Smike#ifndef _SIZE_T_DECLARED
16102227Smiketypedef	__size_t	size_t;
17102227Smike#define	_SIZE_T_DECLARED
1862321Salfred#endif
1962321Salfred
20104399Smiketypedef	struct entry {
21104399Smike	char	*key;
22104399Smike	void	*data;
2362321Salfred} ENTRY;
2462321Salfred
25104399Smiketypedef	enum {
2662321Salfred	FIND, ENTER
2762321Salfred} ACTION;
2862321Salfred
29104399Smiketypedef	enum {
3062321Salfred	preorder,
3162321Salfred	postorder,
3262321Salfred	endorder,
3362321Salfred	leaf
3462321Salfred} VISIT;
3562321Salfred
3662321Salfred#ifdef _SEARCH_PRIVATE
37104399Smiketypedef	struct node {
3862321Salfred	char         *key;
3962321Salfred	struct node  *llink, *rlink;
4062321Salfred} node_t;
4162321Salfred#endif
4262321Salfred
4362321Salfred__BEGIN_DECLS
4493032Simpint	 hcreate(size_t);
4593032Simpvoid	 hdestroy(void);
4693032SimpENTRY	*hsearch(ENTRY, ACTION);
47103012Stjrvoid	*tdelete(const void * __restrict, void ** __restrict,
48101882Srobert	    int (*)(const void *, const void *));
49104399Smikevoid	*tfind(const void *, void * const *,
50104399Smike	    int (*)(const void *, const void *));
5193032Simpvoid	*tsearch(const void *, void **, int (*)(const void *, const void *));
52104399Smikevoid	 twalk(const void *, void (*)(const void *, VISIT, int));
53104399Smike/*
54104399Smike * XXX missing insque(), lsearch(), remque().
55104399Smike */
5662321Salfred__END_DECLS
5762321Salfred
5862321Salfred#endif /* !_SEARCH_H_ */
59