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