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