tsearch.h revision 748945ec6f1c67b7efc934ab0808e1d32f2fb98d
1/*-
2 * Written by J.T. Conklin <jtc@netbsd.org>
3 * Public domain.
4 *
5 *	$NetBSD: search.h,v 1.12 1999/02/22 10:34:28 christos Exp $
6 * $FreeBSD: release/9.0.0/include/search.h 105250 2002-10-16 14:29:23Z robert $
7 */
8
9#ifndef _SEARCH_H_
10#define _SEARCH_H_
11
12#ifndef _MSC_FULL_VER
13#include <sys/cdefs.h>
14#endif  /* _MSC_FULL_VER */
15#if !defined(__BEGIN_DECLS) || !defined(__END_DECLS)
16#if defined(__cplusplus)
17#define	__BEGIN_DECLS	extern "C" {
18#define	__END_DECLS	};
19#else  /* !__cplusplus */
20#define	__BEGIN_DECLS
21#define	__END_DECLS
22#endif /* !__cplusplus */
23#endif /* !__BEGIN_DECLS || !__END_DECLS */
24#include <sys/types.h>
25
26typedef	enum {
27	preorder,
28	postorder,
29	endorder,
30	leaf
31} VISIT;
32
33#ifdef _SEARCH_PRIVATE
34typedef	struct node {
35	char         *key;
36	struct node  *llink, *rlink;
37} node_t;
38#endif
39
40__BEGIN_DECLS
41void	*tdelete(const void * __restrict, void ** __restrict,
42	    int (*)(const void *, const void *));
43void	*tfind(const void *, void * const *,
44	    int (*)(const void *, const void *));
45void	*tsearch(const void *, void **, int (*)(const void *, const void *));
46void	 twalk(const void *, void (*)(const void *, VISIT, int));
47void	 tdestroy(void *, void (*)(void *));
48__END_DECLS
49
50#endif /* !_SEARCH_H_ */
51