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