1 /* basics.c */
2
3 #include "../BKL.h"
4
5 /*--------------------------------------------------------------------*/
6 /*
7 -----------------------
8 constructor
9
10 created -- 95oct07, cca
11 -----------------------
12 */
13 BKL *
BKL_new(void)14 BKL_new (
15 void
16 ) {
17 BKL *bkl ;
18
19 ALLOCATE(bkl, struct _BKL, 1) ;
20
21 BKL_setDefaultFields(bkl) ;
22
23 return(bkl) ; }
24
25 /*--------------------------------------------------------------------*/
26 /*
27 -----------------------
28 set the default fields
29
30 created -- 95oct07, cca
31 -----------------------
32 */
33 void
BKL_setDefaultFields(BKL * bkl)34 BKL_setDefaultFields (
35 BKL *bkl
36 ) {
37 if ( bkl == NULL ) {
38 fprintf(stderr, "\n fatal error in BKL_setDefaultFields(%p)"
39 "\n bad input\n", bkl) ;
40 exit(-1) ;
41 }
42 bkl->bpg = NULL ;
43 bkl->ndom = 0 ;
44 bkl->nseg = 0 ;
45 bkl->nreg = 0 ;
46 bkl->totweight = 0 ;
47 bkl->npass = 0 ;
48 bkl->npatch = 0 ;
49 bkl->nflips = 0 ;
50 bkl->nimprove = 0 ;
51 bkl->ngaineval = 0 ;
52 bkl->colors = NULL ;
53 bkl->alpha = 0.0 ;
54 bkl->cweights[0] = bkl->cweights[1] = bkl->cweights[2] = 0 ;
55 bkl->regwghts = NULL ;
56
57 return ; }
58
59 /*--------------------------------------------------------------------*/
60 /*
61 ------------------------------------
62 clear the data fields
63
64 created -- 95oct07, cca
65 modified -- 95dec07, cca
66 memory leak (bkl->regwghts) fixed
67 ------------------------------------
68 */
69 void
BKL_clearData(BKL * bkl)70 BKL_clearData (
71 BKL *bkl
72 ) {
73 if ( bkl == NULL ) {
74 fprintf(stderr, "\n fatal error in BKL_clearData(%p)"
75 "\n bad input\n", bkl) ;
76 exit(-1) ;
77 }
78 if ( bkl->colors != NULL ) {
79 IVfree(bkl->colors) ;
80 }
81 if ( bkl->bpg != NULL
82 && bkl->bpg->graph != NULL
83 && bkl->bpg->graph->vwghts == NULL
84 && bkl->regwghts != NULL ) {
85 IVfree(bkl->regwghts) ;
86 }
87 BKL_setDefaultFields(bkl) ;
88
89 return ; }
90
91 /*--------------------------------------------------------------------*/
92 /*
93 -----------------------
94 destructor
95
96 created -- 95oct07, cca
97 -----------------------
98 */
99 void
BKL_free(BKL * bkl)100 BKL_free (
101 BKL *bkl
102 ) {
103 if ( bkl == NULL ) {
104 fprintf(stderr, "\n fatal error in BKL_free(%p)"
105 "\n bad input\n", bkl) ;
106 exit(-1) ;
107 }
108 BKL_clearData(bkl) ;
109 FREE(bkl) ;
110
111 return ; }
112
113 /*--------------------------------------------------------------------*/
114