xref: /netbsd/external/bsd/libbind/dist/include/isc/tree.h (revision 6550d01e)
1 /*	$NetBSD: tree.h,v 1.1.1.1 2009/04/12 15:33:33 christos Exp $	*/
2 
3 /* tree.h - declare structures used by tree library
4  *
5  * vix 22jan93 [revisited; uses RCS, ANSI, POSIX; has bug fixes]
6  * vix 27jun86 [broken out of tree.c]
7  *
8  * Id: tree.h,v 1.3 2005/04/27 04:56:18 sra Exp
9  */
10 
11 
12 #ifndef	_TREE_H_INCLUDED
13 #define	_TREE_H_INCLUDED
14 
15 
16 #ifndef __P
17 # if defined(__STDC__) || defined(__GNUC__)
18 #  define __P(x) x
19 # else
20 #  define __P(x) ()
21 # endif
22 #endif
23 
24 /*%
25  * tree_t is our package-specific anonymous pointer.
26  */
27 #if defined(__STDC__) || defined(__GNUC__)
28 typedef	void *tree_t;
29 #else
30 typedef	char *tree_t;
31 #endif
32 
33 /*%
34  * Do not taint namespace
35  */
36 #define	tree_add	__tree_add
37 #define	tree_delete	__tree_delete
38 #define	tree_init	__tree_init
39 #define	tree_mung	__tree_mung
40 #define	tree_srch	__tree_srch
41 #define	tree_trav	__tree_trav
42 
43 
44 typedef	struct tree_s {
45 		tree_t		data;
46 		struct tree_s	*left, *right;
47 		short		bal;
48 	}
49 	tree;
50 
51 
52 void	tree_init	__P((tree **));
53 tree_t	tree_srch	__P((tree **, int (*)(), tree_t));
54 tree_t	tree_add	__P((tree **, int (*)(), tree_t, void (*)()));
55 int	tree_delete	__P((tree **, int (*)(), tree_t, void (*)()));
56 int	tree_trav	__P((tree **, int (*)()));
57 void	tree_mung	__P((tree **, void (*)()));
58 
59 
60 #endif	/* _TREE_H_INCLUDED */
61 /*! \file */
62