search.h revision 104399
1172998Speter/*-
2172998Speter * Written by J.T. Conklin <jtc@netbsd.org>
3172998Speter * Public domain.
4172998Speter *
5172998Speter *	$NetBSD: search.h,v 1.12 1999/02/22 10:34:28 christos Exp $
6172998Speter * $FreeBSD: head/include/search.h 104399 2002-10-03 06:31:16Z mike $
7172998Speter */
8172998Speter
9172998Speter#ifndef _SEARCH_H_
10172998Speter#define _SEARCH_H_
11172998Speter
12172998Speter#include <sys/cdefs.h>
13172998Speter#include <sys/_types.h>
14172998Speter
15172998Speter#ifndef _SIZE_T_DECLARED
16172998Spetertypedef	__size_t	size_t;
17172998Speter#define	_SIZE_T_DECLARED
18172998Speter#endif
19172998Speter
20172998Spetertypedef	struct entry {
21172998Speter	char	*key;
22172998Speter	void	*data;
23172998Speter} ENTRY;
24172998Speter
25172998Spetertypedef	enum {
26172998Speter	FIND, ENTER
27172998Speter} ACTION;
28172998Speter
29172998Spetertypedef	enum {
30172998Speter	preorder,
31172998Speter	postorder,
32172998Speter	endorder,
33172998Speter	leaf
34181132Sjhb} VISIT;
35172998Speter
36181132Sjhb#ifdef _SEARCH_PRIVATE
37172998Spetertypedef	struct node {
38172998Speter	char         *key;
39172998Speter	struct node  *llink, *rlink;
40172998Speter} node_t;
41172998Speter#endif
42172998Speter
43172998Speter__BEGIN_DECLS
44172998Speterint	 hcreate(size_t);
45172998Spetervoid	 hdestroy(void);
46172998SpeterENTRY	*hsearch(ENTRY, ACTION);
47172998Spetervoid	*tdelete(const void * __restrict, void ** __restrict,
48172998Speter	    int (*)(const void *, const void *));
49172998Spetervoid	*tfind(const void *, void * const *,
50172998Speter	    int (*)(const void *, const void *));
51172998Spetervoid	*tsearch(const void *, void **, int (*)(const void *, const void *));
52172998Spetervoid	 twalk(const void *, void (*)(const void *, VISIT, int));
53172998Speter/*
54172998Speter * XXX missing insque(), lsearch(), remque().
55172998Speter */
56172998Speter__END_DECLS
57172998Speter
58172998Speter#endif /* !_SEARCH_H_ */
59172998Speter