1 /* basics.c */
2
3 #include "../Tree.h"
4
5 #define MYTRACE 0
6 #define MYDEBUG 0
7
8 /*--------------------------------------------------------------------*/
9 /*
10 -----------------------------------------------
11 purpose -- create and return a new Tree object
12
13 created -- 95nov15, cca
14 -----------------------------------------------
15 */
16 Tree *
Tree_new(void)17 Tree_new (
18 void
19 ) {
20 Tree *tree ;
21
22 #if MYTRACE > 0
23 fprintf(stdout, "\n just inside Tree_new()") ;
24 fflush(stdout) ;
25 #endif
26
27 ALLOCATE(tree, struct _Tree, 1) ;
28
29 Tree_setDefaultFields(tree) ;
30
31 #if MYTRACE > 0
32 fprintf(stdout, "\n leaving Tree_new()") ;
33 fflush(stdout) ;
34 #endif
35
36 return(tree) ; }
37
38 /*--------------------------------------------------------------------*/
39 /*
40 ------------------------------------------------------
41 purpose -- set the default fields for the Tree object
42
43 created -- 95nov15, cca
44 ------------------------------------------------------
45 */
46 void
Tree_setDefaultFields(Tree * tree)47 Tree_setDefaultFields (
48 Tree *tree
49 ) {
50
51 #if MYTRACE > 0
52 fprintf(stdout, "\n just inside Tree_setDefaultFields(%)", g) ;
53 fflush(stdout) ;
54 #endif
55
56 if ( tree == NULL ) {
57 fprintf(stderr, "\n fatal error in Tree_setDefaultFields(%p)"
58 "\n tree is NULL\n", tree) ;
59 exit(-1) ;
60 }
61 tree->n = 0 ;
62 tree->root = -1 ;
63 tree->par = NULL ;
64 tree->fch = NULL ;
65 tree->sib = NULL ;
66
67 #if MYTRACE > 0
68 fprintf(stdout, "\n leaving Tree_setDefaultFields(%)", tree) ;
69 fflush(stdout) ;
70 #endif
71
72 return ; }
73
74 /*--------------------------------------------------------------------*/
75 /*
76 --------------------------------
77 purpose -- clear the data fields
78
79 created -- 95nov15, cca
80 --------------------------------
81 */
82 void
Tree_clearData(Tree * tree)83 Tree_clearData (
84 Tree *tree
85 ) {
86 #if MYTRACE > 0
87 fprintf(stdout, "\n just inside Tree_clearData(%)", tree) ;
88 fflush(stdout) ;
89 #endif
90
91 if ( tree == NULL ) {
92 fprintf(stderr, "\n fatal error in Tree_clearData(%p)"
93 "\n tree is NULL\n", tree) ;
94 exit(-1) ;
95 }
96
97 if ( tree->par != NULL ) {
98 IVfree(tree->par) ;
99 }
100 if ( tree->fch != NULL ) {
101 IVfree(tree->fch) ;
102 }
103 if ( tree->sib != NULL ) {
104 IVfree(tree->sib) ;
105 }
106 Tree_setDefaultFields(tree) ;
107
108 #if MYTRACE > 0
109 fprintf(stdout, "\n leaving Tree_clearData(%)", tree) ;
110 fflush(stdout) ;
111 #endif
112
113 return ; }
114
115 /*--------------------------------------------------------------------*/
116 /*
117 --------------------------------
118 purpose -- free the Tree object
119
120 created -- 95nov15, cca
121 --------------------------------
122 */
123 void
Tree_free(Tree * tree)124 Tree_free (
125 Tree *tree
126 ) {
127 #if MYTRACE > 0
128 fprintf(stdout, "\n just inside Tree_free(%)", tree) ;
129 fflush(stdout) ;
130 #endif
131
132 if ( tree == NULL ) {
133 fprintf(stderr, "\n fatal error in Tree_free(%p)"
134 "\n tree is NULL\n", tree) ;
135 exit(-1) ;
136 }
137
138 Tree_clearData(tree) ;
139
140 FREE(tree) ;
141
142 #if MYTRACE > 0
143 fprintf(stdout, "\n leaving Tree_free(%)", tree) ;
144 fflush(stdout) ;
145 #endif
146
147 return ; }
148
149 /*--------------------------------------------------------------------*/
150