1748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat/*-
2748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat * Written by J.T. Conklin <jtc@netbsd.org>
3748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat * Public domain.
4748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *
5748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *	$NetBSD: search.h,v 1.12 1999/02/22 10:34:28 christos Exp $
6748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat * $FreeBSD: release/9.0.0/include/search.h 105250 2002-10-16 14:29:23Z robert $
7748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat */
8748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
9748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#ifndef _SEARCH_H_
10748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#define _SEARCH_H_
11748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
12748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#ifndef _MSC_FULL_VER
13748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#include <sys/cdefs.h>
14748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#endif  /* _MSC_FULL_VER */
15748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#if !defined(__BEGIN_DECLS) || !defined(__END_DECLS)
16748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#if defined(__cplusplus)
17748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#define	__BEGIN_DECLS	extern "C" {
18748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#define	__END_DECLS	};
19748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#else  /* !__cplusplus */
20748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#define	__BEGIN_DECLS
21748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#define	__END_DECLS
22748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#endif /* !__cplusplus */
23748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#endif /* !__BEGIN_DECLS || !__END_DECLS */
24748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#include <sys/types.h>
25748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
26748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erattypedef	enum {
27748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	preorder,
28748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	postorder,
29748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	endorder,
30748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	leaf
31748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} VISIT;
32748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
33748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#ifdef _SEARCH_PRIVATE
34748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erattypedef	struct node {
35748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	char         *key;
36748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	struct node  *llink, *rlink;
37748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} node_t;
38748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#endif
39748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
40748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat__BEGIN_DECLS
41748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratvoid	*tdelete(const void * __restrict, void ** __restrict,
42748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    int (*)(const void *, const void *));
43748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratvoid	*tfind(const void *, void * const *,
44748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat	    int (*)(const void *, const void *));
45748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratvoid	*tsearch(const void *, void **, int (*)(const void *, const void *));
46748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratvoid	 twalk(const void *, void (*)(const void *, VISIT, int));
47748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratvoid	 tdestroy(void *, void (*)(void *));
48748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat__END_DECLS
49748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat
50748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#endif /* !_SEARCH_H_ */
51