/* basics.c */
#include "../BKL.h"
/*--------------------------------------------------------------------*/
/*
-----------------------
constructor
created -- 95oct07, cca
-----------------------
*/
BKL *
BKL_new (
void
) {
BKL *bkl ;
ALLOCATE(bkl, struct _BKL, 1) ;
BKL_setDefaultFields(bkl) ;
return(bkl) ; }
/*--------------------------------------------------------------------*/
/*
-----------------------
set the default fields
created -- 95oct07, cca
-----------------------
*/
void
BKL_setDefaultFields (
BKL *bkl
) {
if ( bkl == NULL ) {
fprintf(stderr, "\n fatal error in BKL_setDefaultFields(%p)"
"\n bad input\n", bkl) ;
exit(-1) ;
}
bkl->bpg = NULL ;
bkl->ndom = 0 ;
bkl->nseg = 0 ;
bkl->nreg = 0 ;
bkl->totweight = 0 ;
bkl->npass = 0 ;
bkl->npatch = 0 ;
bkl->nflips = 0 ;
bkl->nimprove = 0 ;
bkl->ngaineval = 0 ;
bkl->colors = NULL ;
bkl->alpha = 0.0 ;
bkl->cweights[0] = bkl->cweights[1] = bkl->cweights[2] = 0 ;
bkl->regwghts = NULL ;
return ; }
/*--------------------------------------------------------------------*/
/*
------------------------------------
clear the data fields
created -- 95oct07, cca
modified -- 95dec07, cca
memory leak (bkl->regwghts) fixed
------------------------------------
*/
void
BKL_clearData (
BKL *bkl
) {
if ( bkl == NULL ) {
fprintf(stderr, "\n fatal error in BKL_clearData(%p)"
"\n bad input\n", bkl) ;
exit(-1) ;
}
if ( bkl->colors != NULL ) {
IVfree(bkl->colors) ;
}
if ( bkl->bpg != NULL
&& bkl->bpg->graph != NULL
&& bkl->bpg->graph->vwghts == NULL
&& bkl->regwghts != NULL ) {
IVfree(bkl->regwghts) ;
}
BKL_setDefaultFields(bkl) ;
return ; }
/*--------------------------------------------------------------------*/
/*
-----------------------
destructor
created -- 95oct07, cca
-----------------------
*/
void
BKL_free (
BKL *bkl
) {
if ( bkl == NULL ) {
fprintf(stderr, "\n fatal error in BKL_free(%p)"
"\n bad input\n", bkl) ;
exit(-1) ;
}
BKL_clearData(bkl) ;
FREE(bkl) ;
return ; }
/*--------------------------------------------------------------------*/
syntax highlighted by Code2HTML, v. 0.9.1