Exemplo n.º 1
0
void memclr( void )
{
   char *me = "memclr";
   char msg[256], **names = NULL;
   int iblk,i,j,k,len2,num_tp_curs,icur, num_edits, num_tpc, num_tp;
   TimePlotCurve_t *tpc_ptr = NULL;
   TimePlot_t *tp_ptr = NULL;
   RGST_AttributeElem_t *func;
   if (domains != NULL) {
     for ( iblk = 0 ; iblk < nblk ; iblk++ ) {
        domain_free(&domains[iblk]);
     }
   }
   spline_free();
   decomp_free();
   NodeList_free();
   conditionals_free();
   species_free();
   TimeStepControl_free(NULL);
   FunctionTimer_free(gv_hash_tbl);
   FunctionTimer_ht_remove(gv_hash_tbl, "global");
   FunctionTimer_ht_setup (gv_hash_tbl, "global");
   UserList_free();
   if (ifcom) freecom();
   FREEMEM(lnbuf);
   line = NULL;
   GlobalArrays_free(NULL);
   func = rgst_list_attr(A_OBJECT, "Function_Free");
   while (func != NULL) {
      Command_t *cp = (Command_t *) func->rgst_obj->obj;
      (*(cp->proc))(NULL);
      func = func->next;
   }
   if (rgst_check_for_obj("sourceData") == TRUE)  {
     rgst_del("sourceData");
     for ( i = 0 ; i < nsrc ; i++ ) {
       if (src[i].nzsrc  > 0) { FREEMEM(src[i].ndxsrc) ; }
       if (src[i].nidat1 > 0) { FREEMEM(src[i].idat1) ; }
       if (src[i].nfdat1 > 0) { FREEMEM(src[i].fdat1) ; }
       if (src[i].ndat2  > 0) { FREEMEM(src[i].dat2) ; }
     }
     FREEMEM(src) ;
   }
   nsrc = 0;
   if (rgst_check_for_obj("freqMesgData") == TRUE) {
     rgst_del("freqMesgData");
     for ( i = 0 ; i < nfq ; i++ ) {
       rgst_del (fq[i].name);
       FREEMEM(fq[i].msg) ;
       FREEMEM(fq[i].name) ;
     }
     FREEMEM(fq) ;
     FREEMEM(fqtp) ;
   }
   nfq = 0;
   if (rgst_check_for_obj("cycleMesgData") == TRUE) {
     rgst_del("cycleMesgData");
     for ( i = 0 ; i < ncyc ; i++ ) {
       rgst_del (cyc[i].name);
       FREEMEM(cyc[i].msg) ;
       FREEMEM(cyc[i].name) ;
     }
     FREEMEM(cyc) ;
     FREEMEM(cyctp) ;
   }
   ncyc = 0;
   if (rgst_check_for_obj("gparmData") == TRUE) {
     rgst_del("gparmData");
     FREEMEM(gparm);
   }
   if (rgst_check_for_obj("timePlotData") == TRUE) {
     rgst_del("timePlotData");
     for (i=0 ; i<ntp ; i++) {
       for (icur=0; icur<tpdata[i]->num_tp_curs; icur++) {
         rgst_del(tpdata[i]->tp_curs[icur]->name);
         TimePlotCurve_destruct(tpdata[i]->tp_curs[icur]);
       }
       rgst_del(tpdata[i]->name);
       TimePlot_destruct(tpdata[i]);
     }
     FREEMEM(tpdata);
   }
   ntp = 0;
   Region_free();
   if (ptab != NULL) rgst_del("ptabData");
   if (etab != NULL) rgst_del("etabData");
   if (ktab != NULL) rgst_del("ktabData");
   if (stab != NULL) rgst_del("stabData");
   FREEMEM(ptab);
   FREEMEM(etab);
   FREEMEM(ktab);
   FREEMEM(stab);
   nbq = 0;
   if (rgst_check_for_obj("domains") == TRUE) {
      rgst_del("domains");
   }
   FREEMEM(domains);       
   names = rgst_list_objs_by_type( &num_tp, "TimePlot_t");
   for (i = 0; i<num_tp; i++) {
     ctlwarning(me,"shawn, why are there time plots left, they should have"
              "been removed by now");
     tp_ptr = rgst_get_t(names[i],"TimePlot_t");
     if (tp_ptr == NULL) ctlerror(me,logic_err);
     rgst_del(names[i]);
     tp_ptr = TimePlot_destruct(tp_ptr);
     FREEMEM(names[i]);
   }
   FREEMEM(names);
   hash_del_objs_of_type(gv_hash_tbl,"double",NULL);
#ifdef DEBUG
   hash_print_by_type(rgst_objs_hash_tbl); 
   hash_print_by_type(gv_hash_tbl);
#endif
}
Exemplo n.º 2
0
Arquivo: nkcs.c Projeto: rpreen/nkcs
void nkcs_free(NKCS *nkc)
{
	for(int s = 0; s < S; s++)
		species_free(&nkc->species[s]);
	free(nkc->species);
}