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