/* Function: free_GeneModel(obj) * * Descrip: Free Function: removes the memory held by obj * Will chain up to owned members and clear all lists * * * Arg: obj [UNKN ] Object that is free'd [GeneModel *] * * Return [UNKN ] Undocumented return value [GeneModel *] * */ GeneModel * free_GeneModel(GeneModel * obj) { if( obj == NULL) { warn("Attempting to free a NULL pointer to a GeneModel obj. Should be trappable"); return NULL; } if( obj->dynamite_hard_link > 1) { obj->dynamite_hard_link--; return NULL; } if( obj->splice5 != NULL) free_pwmDNA(obj->splice5); if( obj->splice3 != NULL) free_pwmDNA(obj->splice3); if( obj->intron != NULL) free_RandomModelDNA(obj->intron); if( obj->polyp != NULL) free_RandomModelDNA(obj->polyp); if( obj->rnd != NULL) free_RandomModelDNA(obj->rnd); if( obj->splice5score != NULL) free_SpliceSiteScore(obj->splice5score); if( obj->splice3score != NULL) free_SpliceSiteScore(obj->splice3score); ckfree(obj); return NULL; }
/* Function: free_GeneModel(obj) * * Descrip: Free Function: removes the memory held by obj * Will chain up to owned members and clear all lists * * * Arg: obj [UNKN ] Object that is free'd [GeneModel *] * * Return [UNKN ] Undocumented return value [GeneModel *] * */ GeneModel * free_GeneModel(GeneModel * obj) { int return_early = 0; if( obj == NULL) { warn("Attempting to free a NULL pointer to a GeneModel obj. Should be trappable"); return NULL; } #ifdef PTHREAD assert(pthread_mutex_lock(&(obj->dynamite_mutex)) == 0); #endif if( obj->dynamite_hard_link > 1) { return_early = 1; obj->dynamite_hard_link--; } #ifdef PTHREAD assert(pthread_mutex_unlock(&(obj->dynamite_mutex)) == 0); #endif if( return_early == 1) return NULL; if( obj->splice5 != NULL) free_pwmDNA(obj->splice5); if( obj->splice3 != NULL) free_pwmDNA(obj->splice3); if( obj->intron != NULL) free_RandomModelDNA(obj->intron); if( obj->polyp != NULL) free_RandomModelDNA(obj->polyp); if( obj->rnd != NULL) free_RandomModelDNA(obj->rnd); if( obj->splice5score != NULL) free_SpliceSiteScore(obj->splice5score); if( obj->splice3score != NULL) free_SpliceSiteScore(obj->splice3score); ckfree(obj); return NULL; }