DEVdestroy(), cleanup memory maintenance

move the cleanup business over to
  DEVmodDelete() and DEVdelete()
and invoke them to do the job.
This commit is contained in:
rlar 2018-01-14 18:45:43 +01:00
parent f25b7e2f08
commit daca48a117
82 changed files with 267 additions and 241 deletions

View File

@ -54,10 +54,10 @@ $(module)destroy(GENmodel **inModel)
$(module)instance *inst = $(module)instances(mod); $(module)instance *inst = $(module)instances(mod);
while (inst) { while (inst) {
$(module)instance *next_inst = $(module)nextInstance(inst); $(module)instance *next_inst = $(module)nextInstance(inst);
GENinstanceFree(GENinstanceOf(inst)); $(module)delete(GENinstanceOf(inst));
inst = next_inst; inst = next_inst;
} }
GENmodelFree(GENmodelOf(mod)); $(module)mDelete(GENmodelOf(mod));
mod = next_mod; mod = next_mod;
} }

View File

@ -7,11 +7,19 @@ Author: 1987 Kanwar Jit Singh
#include "asrcdefs.h" #include "asrcdefs.h"
#include "ngspice/sperror.h" #include "ngspice/sperror.h"
#include "ngspice/suffix.h" #include "ngspice/suffix.h"
#include "ngspice/inpdefs.h"
int int
ASRCdelete(GENinstance *inst) ASRCdelete(GENinstance *inst)
{ {
ASRCinstance *here = (ASRCinstance *) inst;
INPfreeTree(here->ASRCtree);
FREE(here->ASRCacValues);
FREE(here->ASRCposPtr);
FREE(here->ASRCvars);
GENinstanceFree(inst); GENinstanceFree(inst);
return OK; return OK;
} }

View File

@ -6,7 +6,6 @@ Author: 1987 Kanwar Jit Singh
#include "ngspice/ngspice.h" #include "ngspice/ngspice.h"
#include "asrcdefs.h" #include "asrcdefs.h"
#include "ngspice/suffix.h" #include "ngspice/suffix.h"
#include "ngspice/inpdefs.h"
void void
@ -19,14 +18,10 @@ ASRCdestroy(GENmodel **inModel)
ASRCinstance *inst = ASRCinstances(mod); ASRCinstance *inst = ASRCinstances(mod);
while (inst) { while (inst) {
ASRCinstance *next_inst = ASRCnextInstance(inst); ASRCinstance *next_inst = ASRCnextInstance(inst);
INPfreeTree(inst->ASRCtree); ASRCdelete(GENinstanceOf(inst));
FREE(inst->ASRCacValues);
FREE(inst->ASRCposPtr);
FREE(inst->ASRCvars);
GENinstanceFree(GENinstanceOf(inst));
inst = next_inst; inst = next_inst;
} }
GENmodelFree(GENmodelOf(mod)); ASRCmDelete(GENmodelOf(mod));
mod = next_mod; mod = next_mod;
} }

View File

@ -17,6 +17,8 @@ Author: 1985 Thomas L. Quarles
int int
BJTdelete(GENinstance *inst) BJTdelete(GENinstance *inst)
{ {
BJTinstance *here = (BJTinstance*) inst;
FREE(here->BJTsens);
GENinstanceFree(inst); GENinstanceFree(inst);
return OK; return OK;
} }

View File

@ -23,11 +23,10 @@ BJTdestroy(GENmodel **inModel)
BJTinstance *inst = BJTinstances(mod); BJTinstance *inst = BJTinstances(mod);
while (inst) { while (inst) {
BJTinstance *next_inst = BJTnextInstance(inst); BJTinstance *next_inst = BJTnextInstance(inst);
FREE(inst->BJTsens); BJTdelete(GENinstanceOf(inst));
GENinstanceFree(GENinstanceOf(inst));
inst = next_inst; inst = next_inst;
} }
GENmodelFree(GENmodelOf(mod)); BJTmDelete(GENmodelOf(mod));
mod = next_mod; mod = next_mod;
} }

View File

@ -18,10 +18,10 @@ B1destroy(GENmodel **inModel)
B1instance *inst = B1instances(mod); B1instance *inst = B1instances(mod);
while (inst) { while (inst) {
B1instance *next_inst = B1nextInstance(inst); B1instance *next_inst = B1nextInstance(inst);
GENinstanceFree(GENinstanceOf(inst)); B1delete(GENinstanceOf(inst));
inst = next_inst; inst = next_inst;
} }
GENmodelFree(GENmodelOf(mod)); B1mDelete(GENmodelOf(mod));
mod = next_mod; mod = next_mod;
} }

View File

@ -18,10 +18,10 @@ B2destroy(GENmodel **inModel)
B2instance *inst = B2instances(mod); B2instance *inst = B2instances(mod);
while (inst) { while (inst) {
B2instance *next_inst = B2nextInstance(inst); B2instance *next_inst = B2nextInstance(inst);
GENinstanceFree(GENinstanceOf(inst)); B2delete(GENinstanceOf(inst));
inst = next_inst; inst = next_inst;
} }
GENmodelFree(GENmodelOf(mod)); B2mDelete(GENmodelOf(mod));
mod = next_mod; mod = next_mod;
} }

View File

@ -22,28 +22,13 @@ BSIM3destroy(GENmodel **inModel)
BSIM3model *next_mod = BSIM3nextModel(mod); BSIM3model *next_mod = BSIM3nextModel(mod);
BSIM3instance *inst = BSIM3instances(mod); BSIM3instance *inst = BSIM3instances(mod);
/** added to get rid of link list pSizeDependParamKnot **/
struct bsim3SizeDependParam *p = mod->pSizeDependParamKnot;
while (p) {
struct bsim3SizeDependParam *next_p = p->pNext;
FREE(p);
p = next_p;
}
/** end of extra code **/
while (inst) { while (inst) {
BSIM3instance *next_inst = BSIM3nextInstance(inst); BSIM3instance *next_inst = BSIM3nextInstance(inst);
GENinstanceFree(GENinstanceOf(inst)); BSIM3delete(GENinstanceOf(inst));
inst = next_inst; inst = next_inst;
} }
#ifdef USE_OMP BSIM3mDelete(GENmodelOf(mod));
FREE(mod->BSIM3InstanceArray);
#endif
/* mod->BSIM3modName to be freed in INPtabEnd() */
FREE(mod->BSIM3version);
GENmodelFree(GENmodelOf(mod));
mod = next_mod; mod = next_mod;
} }

View File

@ -17,6 +17,22 @@
int int
BSIM3mDelete(GENmodel *model) BSIM3mDelete(GENmodel *model)
{ {
BSIM3model *mod = (BSIM3model *) model;
#ifdef USE_OMP
FREE(mod->BSIM3InstanceArray);
#endif
struct bsim3SizeDependParam *p = mod->pSizeDependParamKnot;
while (p) {
struct bsim3SizeDependParam *next_p = p->pNext;
FREE(p);
p = next_p;
}
/* mod->BSIM3modName to be freed in INPtabEnd() */
FREE(mod->BSIM3version);
GENmodelFree(model); GENmodelFree(model);
return OK; return OK;
} }

View File

@ -25,10 +25,10 @@ B3SOIDDdestroy(GENmodel **inModel)
B3SOIDDinstance *inst = B3SOIDDinstances(mod); B3SOIDDinstance *inst = B3SOIDDinstances(mod);
while (inst) { while (inst) {
B3SOIDDinstance *next_inst = B3SOIDDnextInstance(inst); B3SOIDDinstance *next_inst = B3SOIDDnextInstance(inst);
GENinstanceFree(GENinstanceOf(inst)); B3SOIDDdelete(GENinstanceOf(inst));
inst = next_inst; inst = next_inst;
} }
GENmodelFree(GENmodelOf(mod)); B3SOIDDmDelete(GENmodelOf(mod));
mod = next_mod; mod = next_mod;
} }

View File

@ -25,10 +25,10 @@ B3SOIFDdestroy(GENmodel **inModel)
B3SOIFDinstance *inst = B3SOIFDinstances(mod); B3SOIFDinstance *inst = B3SOIFDinstances(mod);
while (inst) { while (inst) {
B3SOIFDinstance *next_inst = B3SOIFDnextInstance(inst); B3SOIFDinstance *next_inst = B3SOIFDnextInstance(inst);
GENinstanceFree(GENinstanceOf(inst)); B3SOIFDdelete(GENinstanceOf(inst));
inst = next_inst; inst = next_inst;
} }
GENmodelFree(GENmodelOf(mod)); B3SOIFDmDelete(GENmodelOf(mod));
mod = next_mod; mod = next_mod;
} }

View File

@ -25,10 +25,10 @@ B3SOIPDdestroy(GENmodel **inModel)
B3SOIPDinstance *inst = B3SOIPDinstances(mod); B3SOIPDinstance *inst = B3SOIPDinstances(mod);
while (inst) { while (inst) {
B3SOIPDinstance *next_inst = B3SOIPDnextInstance(inst); B3SOIPDinstance *next_inst = B3SOIPDnextInstance(inst);
GENinstanceFree(GENinstanceOf(inst)); B3SOIPDdelete(GENinstanceOf(inst));
inst = next_inst; inst = next_inst;
} }
GENmodelFree(GENmodelOf(mod)); B3SOIPDmDelete(GENmodelOf(mod));
mod = next_mod; mod = next_mod;
} }

View File

@ -19,10 +19,10 @@ BSIM3v0destroy(GENmodel **inModel)
BSIM3v0instance *inst = BSIM3v0instances(mod); BSIM3v0instance *inst = BSIM3v0instances(mod);
while (inst) { while (inst) {
BSIM3v0instance *next_inst = BSIM3v0nextInstance(inst); BSIM3v0instance *next_inst = BSIM3v0nextInstance(inst);
GENinstanceFree(GENinstanceOf(inst)); BSIM3v0delete(GENinstanceOf(inst));
inst = next_inst; inst = next_inst;
} }
GENmodelFree(GENmodelOf(mod)); BSIM3v0mDelete(GENmodelOf(mod));
mod = next_mod; mod = next_mod;
} }

View File

@ -25,10 +25,10 @@ BSIM3v1destroy(GENmodel **inModel)
BSIM3v1instance *inst = BSIM3v1instances(mod); BSIM3v1instance *inst = BSIM3v1instances(mod);
while (inst) { while (inst) {
BSIM3v1instance *next_inst = BSIM3v1nextInstance(inst); BSIM3v1instance *next_inst = BSIM3v1nextInstance(inst);
GENinstanceFree(GENinstanceOf(inst)); BSIM3v1delete(GENinstanceOf(inst));
inst = next_inst; inst = next_inst;
} }
GENmodelFree(GENmodelOf(mod)); BSIM3v1mDelete(GENmodelOf(mod));
mod = next_mod; mod = next_mod;
} }

View File

@ -22,26 +22,13 @@ BSIM3v32destroy (GENmodel **inModel)
while (mod) { while (mod) {
BSIM3v32model *next_mod = BSIM3v32nextModel(mod); BSIM3v32model *next_mod = BSIM3v32nextModel(mod);
BSIM3v32instance *inst = BSIM3v32instances(mod); BSIM3v32instance *inst = BSIM3v32instances(mod);
/** added to get rid of link list pSizeDependParamKnot **/
struct bsim3v32SizeDependParam *p = mod->pSizeDependParamKnot;
while (p) {
struct bsim3v32SizeDependParam *next_p = p->pNext;
FREE(p);
p = next_p;
}
/** end of extra code **/
while (inst) { while (inst) {
BSIM3v32instance *next_inst = BSIM3v32nextInstance(inst); BSIM3v32instance *next_inst = BSIM3v32nextInstance(inst);
GENinstanceFree(GENinstanceOf(inst)); BSIM3v32delete(GENinstanceOf(inst));
inst = next_inst; inst = next_inst;
} }
#ifdef USE_OMP BSIM3v32mDelete(GENmodelOf(mod));
FREE(mod->BSIM3v32InstanceArray);
#endif
FREE(mod->BSIM3v32version);
GENmodelFree(GENmodelOf(mod));
mod = next_mod; mod = next_mod;
} }

View File

@ -18,6 +18,21 @@
int int
BSIM3v32mDelete(GENmodel *model) BSIM3v32mDelete(GENmodel *model)
{ {
BSIM3v32model *mod = (BSIM3v32model*) model;
#ifdef USE_OMP
FREE(mod->BSIM3v32InstanceArray);
#endif
struct bsim3v32SizeDependParam *p = mod->pSizeDependParamKnot;
while (p) {
struct bsim3v32SizeDependParam *next_p = p->pNext;
FREE(p);
p = next_p;
}
FREE(mod->BSIM3v32version);
GENmodelFree(model); GENmodelFree(model);
return OK; return OK;
} }

View File

@ -71,26 +71,12 @@ BSIM4destroy(GENmodel **inModel)
while (mod) { while (mod) {
BSIM4model *next_mod = BSIM4nextModel(mod); BSIM4model *next_mod = BSIM4nextModel(mod);
BSIM4instance *inst = BSIM4instances(mod); BSIM4instance *inst = BSIM4instances(mod);
/** added to get rid of link list pSizeDependParamKnot **/
struct bsim4SizeDependParam *p = mod->pSizeDependParamKnot;
while (p) {
struct bsim4SizeDependParam *next_p = p->pNext;
FREE(p);
p = next_p;
}
/** end of extra code **/
while (inst) { while (inst) {
BSIM4instance *next_inst = BSIM4nextInstance(inst); BSIM4instance *next_inst = BSIM4nextInstance(inst);
GENinstanceFree(GENinstanceOf(inst)); BSIM4delete(GENinstanceOf(inst));
inst = next_inst; inst = next_inst;
} }
BSIM4mDelete(GENmodelOf(mod));
#ifdef USE_OMP
FREE(mod->BSIM4InstanceArray);
#endif
FREE(mod->BSIM4version);
GENmodelFree(GENmodelOf(mod));
mod = next_mod; mod = next_mod;
} }

View File

@ -67,6 +67,21 @@
int int
BSIM4mDelete(GENmodel *model) BSIM4mDelete(GENmodel *model)
{ {
BSIM4model *mod = (BSIM4model*) model;
#ifdef USE_OMP
FREE(mod->BSIM4InstanceArray);
#endif
struct bsim4SizeDependParam *p = mod->pSizeDependParamKnot;
while (p) {
struct bsim4SizeDependParam *next_p = p->pNext;
FREE(p);
p = next_p;
}
FREE(mod->BSIM4version);
GENmodelFree(model); GENmodelFree(model);
return OK; return OK;
} }

View File

@ -21,26 +21,12 @@ BSIM4v5destroy(GENmodel **inModel)
while (mod) { while (mod) {
BSIM4v5model *next_mod = BSIM4v5nextModel(mod); BSIM4v5model *next_mod = BSIM4v5nextModel(mod);
BSIM4v5instance *inst = BSIM4v5instances(mod); BSIM4v5instance *inst = BSIM4v5instances(mod);
/** added to get rid of link list pSizeDependParamKnot **/
struct bsim4v5SizeDependParam *p = mod->pSizeDependParamKnot;
while (p) {
struct bsim4v5SizeDependParam *next_p = p->pNext;
FREE(p);
p = next_p;
}
/** end of extra code **/
while (inst) { while (inst) {
BSIM4v5instance *next_inst = BSIM4v5nextInstance(inst); BSIM4v5instance *next_inst = BSIM4v5nextInstance(inst);
GENinstanceFree(GENinstanceOf(inst)); BSIM4v5delete(GENinstanceOf(inst));
inst = next_inst; inst = next_inst;
} }
BSIM4v5mDelete(GENmodelOf(mod));
#ifdef USE_OMP
FREE(mod->BSIM4v5InstanceArray);
#endif
FREE(mod->BSIM4v5version);
GENmodelFree(GENmodelOf(mod));
mod = next_mod; mod = next_mod;
} }

View File

@ -17,6 +17,22 @@
int int
BSIM4v5mDelete(GENmodel *model) BSIM4v5mDelete(GENmodel *model)
{ {
BSIM4v5model *mod = (BSIM4v5model*) model;
#ifdef USE_OMP
/* FIXME free just once for all models */
FREE(mod->BSIM4v5InstanceArray);
#endif
struct bsim4v5SizeDependParam *p = mod->pSizeDependParamKnot;
while (p) {
struct bsim4v5SizeDependParam *next_p = p->pNext;
FREE(p);
p = next_p;
}
FREE(mod->BSIM4v5version);
GENmodelFree(model); GENmodelFree(model);
return OK; return OK;
} }

View File

@ -23,26 +23,12 @@ BSIM4v6destroy(GENmodel **inModel)
while (mod) { while (mod) {
BSIM4v6model *next_mod = BSIM4v6nextModel(mod); BSIM4v6model *next_mod = BSIM4v6nextModel(mod);
BSIM4v6instance *inst = BSIM4v6instances(mod); BSIM4v6instance *inst = BSIM4v6instances(mod);
/** added to get rid of link list pSizeDependParamKnot **/
struct bsim4v6SizeDependParam *p = mod->pSizeDependParamKnot;
while (p) {
struct bsim4v6SizeDependParam *next_p = p->pNext;
FREE(p);
p = next_p;
}
/** end of extra code **/
while (inst) { while (inst) {
BSIM4v6instance *next_inst = BSIM4v6nextInstance(inst); BSIM4v6instance *next_inst = BSIM4v6nextInstance(inst);
GENinstanceFree(GENinstanceOf(inst)); BSIM4v6delete(GENinstanceOf(inst));
inst = next_inst; inst = next_inst;
} }
BSIM4v6mDelete(GENmodelOf(mod));
#ifdef USE_OMP
FREE(mod->BSIM4v6InstanceArray);
#endif
FREE(mod->BSIM4v6version);
GENmodelFree(GENmodelOf(mod));
mod = next_mod; mod = next_mod;
} }

View File

@ -19,6 +19,22 @@
int int
BSIM4v6mDelete(GENmodel *model) BSIM4v6mDelete(GENmodel *model)
{ {
BSIM4v6model *mod = (BSIM4v6model*) model;
#ifdef USE_OMP
/* free just once for all models */
FREE(mod->BSIM4v6InstanceArray);
#endif
struct bsim4v6SizeDependParam *p = mod->pSizeDependParamKnot;
while (p) {
struct bsim4v6SizeDependParam *next_p = p->pNext;
FREE(p);
p = next_p;
}
FREE(mod->BSIM4v6version);
GENmodelFree(model); GENmodelFree(model);
return OK; return OK;
} }

View File

@ -23,27 +23,12 @@ BSIM4v7destroy(GENmodel **inModel)
while (mod) { while (mod) {
BSIM4v7model *next_mod = BSIM4v7nextModel(mod); BSIM4v7model *next_mod = BSIM4v7nextModel(mod);
BSIM4v7instance *inst = BSIM4v7instances(mod); BSIM4v7instance *inst = BSIM4v7instances(mod);
/** added to get rid of link list pSizeDependParamKnot **/
struct bsim4SizeDependParam *p = mod->pSizeDependParamKnot;
while (p) {
struct bsim4SizeDependParam *next_p = p->pNext;
FREE(p);
p = next_p;
}
/** end of extra code **/
while (inst) { while (inst) {
BSIM4v7instance *next_inst = BSIM4v7nextInstance(inst); BSIM4v7instance *next_inst = BSIM4v7nextInstance(inst);
GENinstanceFree(GENinstanceOf(inst)); BSIM4v7delete(GENinstanceOf(inst));
inst = next_inst; inst = next_inst;
} }
BSIM4v7mDelete(GENmodelOf(mod));
#ifdef USE_OMP
FREE(mod->BSIM4v7InstanceArray);
#endif
/* mod->BSIM4v7modName to be freed in INPtabEnd() */
FREE(mod->BSIM4v7version);
GENmodelFree(GENmodelOf(mod));
mod = next_mod; mod = next_mod;
} }

View File

@ -19,6 +19,22 @@
int int
BSIM4v7mDelete(GENmodel *model) BSIM4v7mDelete(GENmodel *model)
{ {
BSIM4v7model *mod = (BSIM4v7model*) model;
#ifdef USE_OMP
/* FIXME free just once for all models */
FREE(mod->BSIM4v7InstanceArray);
#endif
struct bsim4SizeDependParam *p = mod->pSizeDependParamKnot;
while (p) {
struct bsim4SizeDependParam *next_p = p->pNext;
FREE(p);
p = next_p;
}
FREE(mod->BSIM4v7version);
GENmodelFree(model); GENmodelFree(model);
return OK; return OK;
} }

View File

@ -29,15 +29,10 @@ B4SOIdestroy(GENmodel **inModel)
B4SOIinstance *inst = B4SOIinstances(mod); B4SOIinstance *inst = B4SOIinstances(mod);
while (inst) { while (inst) {
B4SOIinstance *next_inst = B4SOInextInstance(inst); B4SOIinstance *next_inst = B4SOInextInstance(inst);
GENinstanceFree(GENinstanceOf(inst)); B4SOIdelete(GENinstanceOf(inst));
inst = next_inst; inst = next_inst;
} }
B4SOImDelete(GENmodelOf(mod));
#ifdef USE_OMP
FREE(mod->B4SOIInstanceArray);
#endif
GENmodelFree(GENmodelOf(mod));
mod = next_mod; mod = next_mod;
} }

View File

@ -23,6 +23,11 @@
int int
B4SOImDelete(GENmodel *model) B4SOImDelete(GENmodel *model)
{ {
#ifdef USE_OMP
B4SOImodel *mod = (B4SOImodel*) model;
FREE(mod->B4SOIInstanceArray);
#endif
GENmodelFree(model); GENmodelFree(model);
return OK; return OK;
} }

View File

@ -19,10 +19,10 @@ CAPdestroy(GENmodel **inModel)
CAPinstance *inst = CAPinstances(mod); CAPinstance *inst = CAPinstances(mod);
while (inst) { while (inst) {
CAPinstance *next_inst = CAPnextInstance(inst); CAPinstance *next_inst = CAPnextInstance(inst);
GENinstanceFree(GENinstanceOf(inst)); CAPdelete(GENinstanceOf(inst));
inst = next_inst; inst = next_inst;
} }
GENmodelFree(GENmodelOf(mod)); CAPmDelete(GENmodelOf(mod));
mod = next_mod; mod = next_mod;
} }

View File

@ -18,10 +18,10 @@ CCCSdestroy(GENmodel **inModel)
CCCSinstance *inst = CCCSinstances(mod); CCCSinstance *inst = CCCSinstances(mod);
while (inst) { while (inst) {
CCCSinstance *next_inst = CCCSnextInstance(inst); CCCSinstance *next_inst = CCCSnextInstance(inst);
GENinstanceFree(GENinstanceOf(inst)); CCCSdelete(GENinstanceOf(inst));
inst = next_inst; inst = next_inst;
} }
GENmodelFree(GENmodelOf(mod)); CCCSmDelete(GENmodelOf(mod));
mod = next_mod; mod = next_mod;
} }

View File

@ -18,10 +18,10 @@ CCVSdestroy(GENmodel **inModel)
CCVSinstance *inst = CCVSinstances(mod); CCVSinstance *inst = CCVSinstances(mod);
while (inst) { while (inst) {
CCVSinstance *next_inst = CCVSnextInstance(inst); CCVSinstance *next_inst = CCVSnextInstance(inst);
GENinstanceFree(GENinstanceOf(inst)); CCVSdelete(GENinstanceOf(inst));
inst = next_inst; inst = next_inst;
} }
GENmodelFree(GENmodelOf(mod)); CCVSmDelete(GENmodelOf(mod));
mod = next_mod; mod = next_mod;
} }

View File

@ -19,10 +19,10 @@ CPLdestroy(GENmodel **inModel)
CPLinstance *inst = CPLinstances(mod); CPLinstance *inst = CPLinstances(mod);
while (inst) { while (inst) {
CPLinstance *next_inst = CPLnextInstance(inst); CPLinstance *next_inst = CPLnextInstance(inst);
GENinstanceFree(GENinstanceOf(inst)); CPLdelete(GENinstanceOf(inst));
inst = next_inst; inst = next_inst;
} }
GENmodelFree(GENmodelOf(mod)); CPLmDelete(GENmodelOf(mod));
mod = next_mod; mod = next_mod;
} }

View File

@ -18,10 +18,10 @@ CSWdestroy(GENmodel **inModel)
CSWinstance *inst = CSWinstances(mod); CSWinstance *inst = CSWinstances(mod);
while (inst) { while (inst) {
CSWinstance *next_inst = CSWnextInstance(inst); CSWinstance *next_inst = CSWnextInstance(inst);
GENinstanceFree(GENinstanceOf(inst)); CSWdelete(GENinstanceOf(inst));
inst = next_inst; inst = next_inst;
} }
GENmodelFree(GENmodelOf(mod)); CSWmDelete(GENmodelOf(mod));
mod = next_mod; mod = next_mod;
} }

View File

@ -18,10 +18,10 @@ DIOdestroy(GENmodel **inModel)
DIOinstance *inst = DIOinstances(mod); DIOinstance *inst = DIOinstances(mod);
while (inst) { while (inst) {
DIOinstance *next_inst = DIOnextInstance(inst); DIOinstance *next_inst = DIOnextInstance(inst);
GENinstanceFree(GENinstanceOf(inst)); DIOdelete(GENinstanceOf(inst));
inst = next_inst; inst = next_inst;
} }
GENmodelFree(GENmodelOf(mod)); DIOmDelete(GENmodelOf(mod));
mod = next_mod; mod = next_mod;
} }

View File

@ -18,10 +18,10 @@ HFETAdestroy(GENmodel **inModel)
HFETAinstance *inst = HFETAinstances(mod); HFETAinstance *inst = HFETAinstances(mod);
while (inst) { while (inst) {
HFETAinstance *next_inst = HFETAnextInstance(inst); HFETAinstance *next_inst = HFETAnextInstance(inst);
GENinstanceFree(GENinstanceOf(inst)); HFETAdelete(GENinstanceOf(inst));
inst = next_inst; inst = next_inst;
} }
GENmodelFree(GENmodelOf(mod)); HFETAmDelete(GENmodelOf(mod));
mod = next_mod; mod = next_mod;
} }

View File

@ -18,10 +18,10 @@ HFET2destroy(GENmodel **inModel)
HFET2instance *inst = HFET2instances(mod); HFET2instance *inst = HFET2instances(mod);
while (inst) { while (inst) {
HFET2instance *next_inst = HFET2nextInstance(inst); HFET2instance *next_inst = HFET2nextInstance(inst);
GENinstanceFree(GENinstanceOf(inst)); HFET2delete(GENinstanceOf(inst));
inst = next_inst; inst = next_inst;
} }
GENmodelFree(GENmodelOf(mod)); HFET2mDelete(GENmodelOf(mod));
mod = next_mod; mod = next_mod;
} }

View File

@ -69,15 +69,10 @@ HSM2destroy(GENmodel **inModel)
HSM2instance *inst = HSM2instances(mod); HSM2instance *inst = HSM2instances(mod);
while (inst) { while (inst) {
HSM2instance *next_inst = HSM2nextInstance(inst); HSM2instance *next_inst = HSM2nextInstance(inst);
GENinstanceFree(GENinstanceOf(inst)); HSM2delete(GENinstanceOf(inst));
inst = next_inst; inst = next_inst;
} }
HSM2mDelete(GENmodelOf(mod));
#ifdef USE_OMP
FREE(mod->HSM2InstanceArray);
#endif
GENmodelFree(GENmodelOf(mod));
mod = next_mod; mod = next_mod;
} }

View File

@ -63,6 +63,11 @@ to others."
int int
HSM2mDelete(GENmodel *model) HSM2mDelete(GENmodel *model)
{ {
#ifdef USE_OMP
HSM2model *mod = (HSM2model*) model;
FREE(mod->HSM2InstanceArray);
#endif
GENmodelFree(model); GENmodelFree(model);
return OK; return OK;
} }

View File

@ -30,10 +30,10 @@ HSMHVdestroy(GENmodel **inModel)
HSMHVinstance *inst = HSMHVinstances(mod); HSMHVinstance *inst = HSMHVinstances(mod);
while (inst) { while (inst) {
HSMHVinstance *next_inst = HSMHVnextInstance(inst); HSMHVinstance *next_inst = HSMHVnextInstance(inst);
GENinstanceFree(GENinstanceOf(inst)); HSMHVdelete(GENinstanceOf(inst));
inst = next_inst; inst = next_inst;
} }
GENmodelFree(GENmodelOf(mod)); HSMHVmDelete(GENmodelOf(mod));
mod = next_mod; mod = next_mod;
} }

View File

@ -72,10 +72,10 @@ HSMHV2destroy(GENmodel **inModel)
HSMHV2instance *inst = HSMHV2instances(mod); HSMHV2instance *inst = HSMHV2instances(mod);
while (inst) { while (inst) {
HSMHV2instance *next_inst = HSMHV2nextInstance(inst); HSMHV2instance *next_inst = HSMHV2nextInstance(inst);
GENinstanceFree(GENinstanceOf(inst)); HSMHV2delete(GENinstanceOf(inst));
inst = next_inst; inst = next_inst;
} }
GENmodelFree(GENmodelOf(mod)); HSMHV2mDelete(GENmodelOf(mod));
mod = next_mod; mod = next_mod;
} }

View File

@ -18,10 +18,10 @@ INDdestroy(GENmodel **inModel)
INDinstance *inst = INDinstances(mod); INDinstance *inst = INDinstances(mod);
while (inst) { while (inst) {
INDinstance *next_inst = INDnextInstance(inst); INDinstance *next_inst = INDnextInstance(inst);
GENinstanceFree(GENinstanceOf(inst)); INDdelete(GENinstanceOf(inst));
inst = next_inst; inst = next_inst;
} }
GENmodelFree(GENmodelOf(mod)); INDmDelete(GENmodelOf(mod));
mod = next_mod; mod = next_mod;
} }

View File

@ -20,10 +20,10 @@ MUTdestroy(GENmodel **inModel)
MUTinstance *inst = MUTinstances(mod); MUTinstance *inst = MUTinstances(mod);
while (inst) { while (inst) {
MUTinstance *next_inst = MUTnextInstance(inst); MUTinstance *next_inst = MUTnextInstance(inst);
GENinstanceFree(GENinstanceOf(inst)); MUTdelete(GENinstanceOf(inst));
inst = next_inst; inst = next_inst;
} }
GENmodelFree(GENmodelOf(mod)); MUTmDelete(GENmodelOf(mod));
mod = next_mod; mod = next_mod;
} }

View File

@ -12,6 +12,8 @@ Author: 1985 Thomas L. Quarles
int int
ISRCdelete(GENinstance *inst) ISRCdelete(GENinstance *inst)
{ {
ISRCinstance *here = (ISRCinstance *) inst;
FREE(here->ISRCcoeffs);
GENinstanceFree(inst); GENinstanceFree(inst);
return OK; return OK;
} }

View File

@ -18,11 +18,10 @@ ISRCdestroy(GENmodel **inModel)
ISRCinstance *inst = ISRCinstances(mod); ISRCinstance *inst = ISRCinstances(mod);
while (inst) { while (inst) {
ISRCinstance *next_inst = ISRCnextInstance(inst); ISRCinstance *next_inst = ISRCnextInstance(inst);
FREE(inst->ISRCcoeffs); ISRCdelete(GENinstanceOf(inst));
GENinstanceFree(GENinstanceOf(inst));
inst = next_inst; inst = next_inst;
} }
GENmodelFree(GENmodelOf(mod)); ISRCmDelete(GENmodelOf(mod));
mod = next_mod; mod = next_mod;
} }

View File

@ -18,10 +18,10 @@ JFETdestroy(GENmodel **inModel)
JFETinstance *inst = JFETinstances(mod); JFETinstance *inst = JFETinstances(mod);
while (inst) { while (inst) {
JFETinstance *next_inst = JFETnextInstance(inst); JFETinstance *next_inst = JFETnextInstance(inst);
GENinstanceFree(GENinstanceOf(inst)); JFETdelete(GENinstanceOf(inst));
inst = next_inst; inst = next_inst;
} }
GENmodelFree(GENmodelOf(mod)); JFETmDelete(GENmodelOf(mod));
mod = next_mod; mod = next_mod;
} }

View File

@ -22,10 +22,10 @@ JFET2destroy(GENmodel **inModel)
JFET2instance *inst = JFET2instances(mod); JFET2instance *inst = JFET2instances(mod);
while (inst) { while (inst) {
JFET2instance *next_inst = JFET2nextInstance(inst); JFET2instance *next_inst = JFET2nextInstance(inst);
GENinstanceFree(GENinstanceOf(inst)); JFET2delete(GENinstanceOf(inst));
inst = next_inst; inst = next_inst;
} }
GENmodelFree(GENmodelOf(mod)); JFET2mDelete(GENmodelOf(mod));
mod = next_mod; mod = next_mod;
} }

View File

@ -18,10 +18,10 @@ LTRAdestroy(GENmodel **inModel)
LTRAinstance *inst = LTRAinstances(mod); LTRAinstance *inst = LTRAinstances(mod);
while (inst) { while (inst) {
LTRAinstance *next_inst = LTRAnextInstance(inst); LTRAinstance *next_inst = LTRAnextInstance(inst);
GENinstanceFree(GENinstanceOf(inst)); LTRAdelete(GENinstanceOf(inst));
inst = next_inst; inst = next_inst;
} }
GENmodelFree(GENmodelOf(mod)); LTRAmDelete(GENmodelOf(mod));
mod = next_mod; mod = next_mod;
} }

View File

@ -18,10 +18,10 @@ MESdestroy(GENmodel **inModel)
MESinstance *inst = MESinstances(mod); MESinstance *inst = MESinstances(mod);
while (inst) { while (inst) {
MESinstance *next_inst = MESnextInstance(inst); MESinstance *next_inst = MESnextInstance(inst);
GENinstanceFree(GENinstanceOf(inst)); MESdelete(GENinstanceOf(inst));
inst = next_inst; inst = next_inst;
} }
GENmodelFree(GENmodelOf(mod)); MESmDelete(GENmodelOf(mod));
mod = next_mod; mod = next_mod;
} }

View File

@ -18,10 +18,10 @@ MESAdestroy(GENmodel **inModel)
MESAinstance *inst = MESAinstances(mod); MESAinstance *inst = MESAinstances(mod);
while (inst) { while (inst) {
MESAinstance *next_inst = MESAnextInstance(inst); MESAinstance *next_inst = MESAnextInstance(inst);
GENinstanceFree(GENinstanceOf(inst)); MESAdelete(GENinstanceOf(inst));
inst = next_inst; inst = next_inst;
} }
GENmodelFree(GENmodelOf(mod)); MESAmDelete(GENmodelOf(mod));
mod = next_mod; mod = next_mod;
} }

View File

@ -12,6 +12,8 @@ Author: 1985 Thomas L. Quarles
int int
MOS1delete(GENinstance *inst) MOS1delete(GENinstance *inst)
{ {
MOS1instance *here = (MOS1instance *) inst;
FREE(here->MOS1sens);
GENinstanceFree(inst); GENinstanceFree(inst);
return OK; return OK;
} }

View File

@ -18,11 +18,10 @@ MOS1destroy(GENmodel **inModel)
MOS1instance *inst = MOS1instances(mod); MOS1instance *inst = MOS1instances(mod);
while (inst) { while (inst) {
MOS1instance *next_inst = MOS1nextInstance(inst); MOS1instance *next_inst = MOS1nextInstance(inst);
FREE(inst->MOS1sens); MOS1delete(GENinstanceOf(inst));
GENinstanceFree(GENinstanceOf(inst));
inst = next_inst; inst = next_inst;
} }
GENmodelFree(GENmodelOf(mod)); MOS1mDelete(GENmodelOf(mod));
mod = next_mod; mod = next_mod;
} }

View File

@ -12,6 +12,8 @@ Author: 1985 Thomas L. Quarles
int int
MOS2delete(GENinstance *inst) MOS2delete(GENinstance *inst)
{ {
MOS2instance *here = (MOS2instance *) inst;
FREE(here->MOS2sens);
GENinstanceFree(inst); GENinstanceFree(inst);
return OK; return OK;
} }

View File

@ -18,11 +18,10 @@ MOS2destroy(GENmodel **inModel)
MOS2instance *inst = MOS2instances(mod); MOS2instance *inst = MOS2instances(mod);
while (inst) { while (inst) {
MOS2instance *next_inst = MOS2nextInstance(inst); MOS2instance *next_inst = MOS2nextInstance(inst);
FREE(inst->MOS2sens); MOS2delete(GENinstanceOf(inst));
GENinstanceFree(GENinstanceOf(inst));
inst = next_inst; inst = next_inst;
} }
GENmodelFree(GENmodelOf(mod)); MOS2mDelete(GENmodelOf(mod));
mod = next_mod; mod = next_mod;
} }

View File

@ -12,6 +12,8 @@ Author: 1985 Thomas L. Quarles
int int
MOS3delete(GENinstance *inst) MOS3delete(GENinstance *inst)
{ {
MOS3instance *here = (MOS3instance *) inst;
FREE(here->MOS3sens);
GENinstanceFree(inst); GENinstanceFree(inst);
return OK; return OK;
} }

View File

@ -18,11 +18,10 @@ MOS3destroy(GENmodel **inModel)
MOS3instance *inst = MOS3instances(mod); MOS3instance *inst = MOS3instances(mod);
while (inst) { while (inst) {
MOS3instance *next_inst = MOS3nextInstance(inst); MOS3instance *next_inst = MOS3nextInstance(inst);
FREE(inst->MOS3sens); MOS3delete(GENinstanceOf(inst));
GENinstanceFree(GENinstanceOf(inst));
inst = next_inst; inst = next_inst;
} }
GENmodelFree(GENmodelOf(mod)); MOS3mDelete(GENmodelOf(mod));
mod = next_mod; mod = next_mod;
} }

View File

@ -12,6 +12,8 @@ Author: 1985 Thomas L. Quarles
int int
MOS6delete(GENinstance *inst) MOS6delete(GENinstance *inst)
{ {
MOS6instance *here = (MOS6instance *) inst;
FREE(here->MOS6sens);
GENinstanceFree(inst); GENinstanceFree(inst);
return OK; return OK;
} }

View File

@ -18,11 +18,10 @@ MOS6destroy(GENmodel **inModel)
MOS6instance *inst = MOS6instances(mod); MOS6instance *inst = MOS6instances(mod);
while (inst) { while (inst) {
MOS6instance *next_inst = MOS6nextInstance(inst); MOS6instance *next_inst = MOS6nextInstance(inst);
FREE(inst->MOS6sens); MOS6delete(GENinstanceOf(inst));
GENinstanceFree(GENinstanceOf(inst));
inst = next_inst; inst = next_inst;
} }
GENmodelFree(GENmodelOf(mod)); MOS6mDelete(GENmodelOf(mod));
mod = next_mod; mod = next_mod;
} }

View File

@ -13,6 +13,8 @@ Modified: Alan Gillespie
int int
MOS9delete(GENinstance *inst) MOS9delete(GENinstance *inst)
{ {
MOS9instance *here = (MOS9instance *) inst;
FREE(here->MOS9sens);
GENinstanceFree(inst); GENinstanceFree(inst);
return OK; return OK;
} }

View File

@ -19,11 +19,10 @@ MOS9destroy(GENmodel **inModel)
MOS9instance *inst = MOS9instances(mod); MOS9instance *inst = MOS9instances(mod);
while (inst) { while (inst) {
MOS9instance *next_inst = MOS9nextInstance(inst); MOS9instance *next_inst = MOS9nextInstance(inst);
FREE(inst->MOS9sens); MOS9delete(GENinstanceOf(inst));
GENinstanceFree(GENinstanceOf(inst));
inst = next_inst; inst = next_inst;
} }
GENmodelFree(GENmodelOf(mod)); MOS9mDelete(GENmodelOf(mod));
mod = next_mod; mod = next_mod;
} }

View File

@ -10,6 +10,7 @@ Author: 1987 Kartikeya Mayaram, U. C. Berkeley CAD Group
#include "ngspice/ngspice.h" #include "ngspice/ngspice.h"
#include "nbjtdefs.h" #include "nbjtdefs.h"
#include "../../../ciderlib/oned/onedext.h"
#include "ngspice/sperror.h" #include "ngspice/sperror.h"
#include "ngspice/suffix.h" #include "ngspice/suffix.h"
@ -17,6 +18,8 @@ Author: 1987 Kartikeya Mayaram, U. C. Berkeley CAD Group
int int
NBJTdelete(GENinstance *inst) NBJTdelete(GENinstance *inst)
{ {
NBJTinstance *here = (NBJTinstance *) inst;
ONEdestroy(here->NBJTpDevice);
GENinstanceFree(inst); GENinstanceFree(inst);
return OK; return OK;
} }

View File

@ -10,7 +10,6 @@ Author: 1987 Kartikeya Mayaram, U. C. Berkeley CAD Group
#include "ngspice/ngspice.h" #include "ngspice/ngspice.h"
#include "nbjtdefs.h" #include "nbjtdefs.h"
#include "../../../ciderlib/oned/onedext.h"
#include "ngspice/cidersupt.h" #include "ngspice/cidersupt.h"
#include "ngspice/suffix.h" #include "ngspice/suffix.h"
@ -25,11 +24,10 @@ NBJTdestroy(GENmodel **inModel)
NBJTinstance *inst = NBJTinstances(mod); NBJTinstance *inst = NBJTinstances(mod);
while (inst) { while (inst) {
NBJTinstance *next_inst = NBJTnextInstance(inst); NBJTinstance *next_inst = NBJTnextInstance(inst);
ONEdestroy(inst->NBJTpDevice); NBJTdelete(GENinstanceOf(inst));
GENinstanceFree(GENinstanceOf(inst));
inst = next_inst; inst = next_inst;
} }
GENmodelFree(GENmodelOf(mod)); NBJTmDelete(GENmodelOf(mod));
mod = next_mod; mod = next_mod;
} }

View File

@ -10,6 +10,8 @@ Author: 1987 Kartikeya Mayaram, U. C. Berkeley CAD Group
#include "ngspice/ngspice.h" #include "ngspice/ngspice.h"
#include "nbjt2def.h" #include "nbjt2def.h"
#include "../../../ciderlib/twod/twoddefs.h"
#include "../../../ciderlib/twod/twodext.h"
#include "ngspice/sperror.h" #include "ngspice/sperror.h"
#include "ngspice/suffix.h" #include "ngspice/suffix.h"
@ -17,6 +19,8 @@ Author: 1987 Kartikeya Mayaram, U. C. Berkeley CAD Group
int int
NBJT2delete(GENinstance *inst) NBJT2delete(GENinstance *inst)
{ {
NBJT2instance *here = (NBJT2instance *) inst;
TWOdestroy(here->NBJT2pDevice);
GENinstanceFree(inst); GENinstanceFree(inst);
return OK; return OK;
} }

View File

@ -10,8 +10,6 @@ Author: 1987 Kartikeya Mayaram, U. C. Berkeley CAD Group
#include "ngspice/ngspice.h" #include "ngspice/ngspice.h"
#include "nbjt2def.h" #include "nbjt2def.h"
#include "../../../ciderlib/twod/twoddefs.h"
#include "../../../ciderlib/twod/twodext.h"
#include "ngspice/suffix.h" #include "ngspice/suffix.h"
@ -25,11 +23,10 @@ NBJT2destroy(GENmodel **inModel)
NBJT2instance *inst = NBJT2instances(mod); NBJT2instance *inst = NBJT2instances(mod);
while (inst) { while (inst) {
NBJT2instance *next_inst = NBJT2nextInstance(inst); NBJT2instance *next_inst = NBJT2nextInstance(inst);
TWOdestroy(inst->NBJT2pDevice); NBJT2delete(GENinstanceOf(inst));
GENinstanceFree(GENinstanceOf(inst));
inst = next_inst; inst = next_inst;
} }
GENmodelFree(GENmodelOf(mod)); NBJT2mDelete(GENmodelOf(mod));
mod = next_mod; mod = next_mod;
} }

View File

@ -19,12 +19,10 @@ NDEVdestroy(GENmodel **inModel)
NDEVinstance *inst = NDEVinstances(mod); NDEVinstance *inst = NDEVinstances(mod);
while (inst) { while (inst) {
NDEVinstance *next_inst = NDEVnextInstance(inst); NDEVinstance *next_inst = NDEVnextInstance(inst);
GENinstanceFree(GENinstanceOf(inst)); NDEVdelete(GENinstanceOf(inst));
inst = next_inst; inst = next_inst;
} }
close(mod->sock); NDEVmDelete(GENmodelOf(mod));
printf("Disconnect to remote NDEV server %s:%d\n", mod->host, mod->port);
GENmodelFree(GENmodelOf(mod));
mod = next_mod; mod = next_mod;
} }

View File

@ -12,7 +12,9 @@ Author: 1987 Kartikeya Mayaram, U. C. Berkeley CAD Group
int int
NDEVmDelete(GENmodel *model) NDEVmDelete(GENmodel *model)
{ {
NG_IGNORE(model); NDEVmodel *mod = (NDEVmodel *) model;
close(mod->sock);
printf("Disconnect to remote NDEV server %s:%d\n", mod->host, mod->port);
GENmodelFree(model);
return OK; return OK;
} }

View File

@ -5,6 +5,7 @@ Author: 1987 Kartikeya Mayaram, U. C. Berkeley CAD Group
#include "ngspice/ngspice.h" #include "ngspice/ngspice.h"
#include "numddefs.h" #include "numddefs.h"
#include "../../../ciderlib/oned/onedext.h"
#include "ngspice/sperror.h" #include "ngspice/sperror.h"
#include "ngspice/suffix.h" #include "ngspice/suffix.h"
@ -12,6 +13,8 @@ Author: 1987 Kartikeya Mayaram, U. C. Berkeley CAD Group
int int
NUMDdelete(GENinstance *inst) NUMDdelete(GENinstance *inst)
{ {
NUMDinstance *here = (NUMDinstance *) inst;
ONEdestroy(here->NUMDpDevice);
GENinstanceFree(inst); GENinstanceFree(inst);
return OK; return OK;
} }

View File

@ -10,7 +10,6 @@ Author: 1987 Kartikeya Mayaram, U. C. Berkeley CAD Group
#include "ngspice/ngspice.h" #include "ngspice/ngspice.h"
#include "numddefs.h" #include "numddefs.h"
#include "../../../ciderlib/oned/onedext.h"
#include "ngspice/cidersupt.h" #include "ngspice/cidersupt.h"
#include "ngspice/suffix.h" #include "ngspice/suffix.h"
@ -25,11 +24,10 @@ NUMDdestroy(GENmodel **inModel)
NUMDinstance *inst = NUMDinstances(mod); NUMDinstance *inst = NUMDinstances(mod);
while (inst) { while (inst) {
NUMDinstance *next_inst = NUMDnextInstance(inst); NUMDinstance *next_inst = NUMDnextInstance(inst);
ONEdestroy(inst->NUMDpDevice); NUMDdelete(GENinstanceOf(inst));
GENinstanceFree(GENinstanceOf(inst));
inst = next_inst; inst = next_inst;
} }
GENmodelFree(GENmodelOf(mod)); NUMDmDelete(GENmodelOf(mod));
mod = next_mod; mod = next_mod;
} }

View File

@ -5,6 +5,8 @@ Author: 1987 Kartikeya Mayaram, U. C. Berkeley CAD Group
#include "ngspice/ngspice.h" #include "ngspice/ngspice.h"
#include "numd2def.h" #include "numd2def.h"
#include "../../../ciderlib/twod/twoddefs.h"
#include "../../../ciderlib/twod/twodext.h"
#include "ngspice/sperror.h" #include "ngspice/sperror.h"
#include "ngspice/suffix.h" #include "ngspice/suffix.h"
@ -12,6 +14,8 @@ Author: 1987 Kartikeya Mayaram, U. C. Berkeley CAD Group
int int
NUMD2delete(GENinstance *inst) NUMD2delete(GENinstance *inst)
{ {
NUMD2instance *here = (NUMD2instance *) inst;
TWOdestroy(here->NUMD2pDevice);
GENinstanceFree(inst); GENinstanceFree(inst);
return OK; return OK;
} }

View File

@ -10,8 +10,6 @@ Author: 1987 Kartikeya Mayaram, U. C. Berkeley CAD Group
#include "ngspice/ngspice.h" #include "ngspice/ngspice.h"
#include "numd2def.h" #include "numd2def.h"
#include "../../../ciderlib/twod/twoddefs.h"
#include "../../../ciderlib/twod/twodext.h"
#include "ngspice/cidersupt.h" #include "ngspice/cidersupt.h"
#include "ngspice/suffix.h" #include "ngspice/suffix.h"
@ -26,11 +24,10 @@ NUMD2destroy(GENmodel **inModel)
NUMD2instance *inst = NUMD2instances(mod); NUMD2instance *inst = NUMD2instances(mod);
while (inst) { while (inst) {
NUMD2instance *next_inst = NUMD2nextInstance(inst); NUMD2instance *next_inst = NUMD2nextInstance(inst);
TWOdestroy(inst->NUMD2pDevice); NUMD2delete(GENinstanceOf(inst));
GENinstanceFree(GENinstanceOf(inst));
inst = next_inst; inst = next_inst;
} }
GENmodelFree(GENmodelOf(mod)); NUMD2mDelete(GENmodelOf(mod));
mod = next_mod; mod = next_mod;
} }

View File

@ -10,6 +10,8 @@ Author: 1987 Kartikeya Mayaram, U. C. Berkeley CAD Group
#include "ngspice/ngspice.h" #include "ngspice/ngspice.h"
#include "numosdef.h" #include "numosdef.h"
#include "../../../ciderlib/twod/twoddefs.h"
#include "../../../ciderlib/twod/twodext.h"
#include "ngspice/sperror.h" #include "ngspice/sperror.h"
#include "ngspice/suffix.h" #include "ngspice/suffix.h"
@ -17,6 +19,8 @@ Author: 1987 Kartikeya Mayaram, U. C. Berkeley CAD Group
int int
NUMOSdelete(GENinstance *inst) NUMOSdelete(GENinstance *inst)
{ {
NUMOSinstance *here = (NUMOSinstance *) inst;
TWOdestroy(here->NUMOSpDevice);
GENinstanceFree(inst); GENinstanceFree(inst);
return OK; return OK;
} }

View File

@ -10,8 +10,6 @@ Author: 1987 Kartikeya Mayaram, U. C. Berkeley CAD Group
#include "ngspice/ngspice.h" #include "ngspice/ngspice.h"
#include "numosdef.h" #include "numosdef.h"
#include "../../../ciderlib/twod/twoddefs.h"
#include "../../../ciderlib/twod/twodext.h"
#include "ngspice/suffix.h" #include "ngspice/suffix.h"
@ -25,11 +23,10 @@ NUMOSdestroy(GENmodel **inModel)
NUMOSinstance *inst = NUMOSinstances(mod); NUMOSinstance *inst = NUMOSinstances(mod);
while (inst) { while (inst) {
NUMOSinstance *next_inst = NUMOSnextInstance(inst); NUMOSinstance *next_inst = NUMOSnextInstance(inst);
TWOdestroy(inst->NUMOSpDevice); NUMOSdelete(GENinstanceOf(inst));
GENinstanceFree(GENinstanceOf(inst));
inst = next_inst; inst = next_inst;
} }
GENmodelFree(GENmodelOf(mod)); NUMOSmDelete(GENmodelOf(mod));
mod = next_mod; mod = next_mod;
} }

View File

@ -18,10 +18,10 @@ RESdestroy(GENmodel **inModel)
RESinstance *inst = RESinstances(mod); RESinstance *inst = RESinstances(mod);
while (inst) { while (inst) {
RESinstance *next_inst = RESnextInstance(inst); RESinstance *next_inst = RESnextInstance(inst);
GENinstanceFree(GENinstanceOf(inst)); RESdelete(GENinstanceOf(inst));
inst = next_inst; inst = next_inst;
} }
GENmodelFree(GENmodelOf(mod)); RESmDelete(GENmodelOf(mod));
mod = next_mod; mod = next_mod;
} }

View File

@ -29,6 +29,7 @@ Acknowledgements : Rupert Howes and Pete Mole.
int int
SOI3delete(GENinstance *inst) SOI3delete(GENinstance *inst)
{ {
/* FREE(inst->SOI3sens); */
GENinstanceFree(inst); GENinstanceFree(inst);
return OK; return OK;
} }

View File

@ -35,11 +35,10 @@ SOI3destroy(GENmodel **inModel)
SOI3instance *inst = SOI3instances(mod); SOI3instance *inst = SOI3instances(mod);
while (inst) { while (inst) {
SOI3instance *next_inst = SOI3nextInstance(inst); SOI3instance *next_inst = SOI3nextInstance(inst);
/* FREE(inst->SOI3sens); */ SOI3delete(GENinstanceOf(inst));
GENinstanceFree(GENinstanceOf(inst));
inst = next_inst; inst = next_inst;
} }
GENmodelFree(GENmodelOf(mod)); SOI3mDelete(GENmodelOf(mod));
mod = next_mod; mod = next_mod;
} }

View File

@ -18,10 +18,10 @@ SWdestroy(GENmodel **inModel)
SWinstance *inst = SWinstances(mod); SWinstance *inst = SWinstances(mod);
while (inst) { while (inst) {
SWinstance *next_inst = SWnextInstance(inst); SWinstance *next_inst = SWnextInstance(inst);
GENinstanceFree(GENinstanceOf(inst)); SWdelete(GENinstanceOf(inst));
inst = next_inst; inst = next_inst;
} }
GENmodelFree(GENmodelOf(mod)); SWmDelete(GENmodelOf(mod));
mod = next_mod; mod = next_mod;
} }

View File

@ -18,10 +18,10 @@ TRAdestroy(GENmodel **inModel)
TRAinstance *inst = TRAinstances(mod); TRAinstance *inst = TRAinstances(mod);
while (inst) { while (inst) {
TRAinstance *next_inst = TRAnextInstance(inst); TRAinstance *next_inst = TRAnextInstance(inst);
GENinstanceFree(GENinstanceOf(inst)); TRAdelete(GENinstanceOf(inst));
inst = next_inst; inst = next_inst;
} }
GENmodelFree(GENmodelOf(mod)); TRAmDelete(GENmodelOf(mod));
mod = next_mod; mod = next_mod;
} }

View File

@ -19,10 +19,10 @@ TXLdestroy(GENmodel **inModel)
TXLinstance *inst = TXLinstances(mod); TXLinstance *inst = TXLinstances(mod);
while (inst) { while (inst) {
TXLinstance *next_inst = TXLnextInstance(inst); TXLinstance *next_inst = TXLnextInstance(inst);
GENinstanceFree(GENinstanceOf(inst)); TXLdelete(GENinstanceOf(inst));
inst = next_inst; inst = next_inst;
} }
GENmodelFree(GENmodelOf(mod)); TXLmDelete(GENmodelOf(mod));
mod = next_mod; mod = next_mod;
} }

View File

@ -18,10 +18,10 @@ URCdestroy(GENmodel **inModel)
URCinstance *inst = URCinstances(mod); URCinstance *inst = URCinstances(mod);
while (inst) { while (inst) {
URCinstance *next_inst = URCnextInstance(inst); URCinstance *next_inst = URCnextInstance(inst);
GENinstanceFree(GENinstanceOf(inst)); URCdelete(GENinstanceOf(inst));
inst = next_inst; inst = next_inst;
} }
GENmodelFree(GENmodelOf(mod)); URCmDelete(GENmodelOf(mod));
mod = next_mod; mod = next_mod;
} }

View File

@ -19,6 +19,8 @@ Spice3 Implementation: 2003 Dietmar Warning DAnalyse GmbH
int int
VBICdelete(GENinstance *inst) VBICdelete(GENinstance *inst)
{ {
VBICinstance *here = (VBICinstance *) inst;
FREE(here->VBICsens);
GENinstanceFree(inst); GENinstanceFree(inst);
return OK; return OK;
} }

View File

@ -25,11 +25,10 @@ VBICdestroy(GENmodel **inModel)
VBICinstance *inst = VBICinstances(mod); VBICinstance *inst = VBICinstances(mod);
while (inst) { while (inst) {
VBICinstance *next_inst = VBICnextInstance(inst); VBICinstance *next_inst = VBICnextInstance(inst);
FREE(inst->VBICsens); VBICdelete(GENinstanceOf(inst));
GENinstanceFree(GENinstanceOf(inst));
inst = next_inst; inst = next_inst;
} }
GENmodelFree(GENmodelOf(mod)); VBICmDelete(GENmodelOf(mod));
mod = next_mod; mod = next_mod;
} }

View File

@ -18,10 +18,10 @@ VCCSdestroy(GENmodel **inModel)
VCCSinstance *inst = VCCSinstances(mod); VCCSinstance *inst = VCCSinstances(mod);
while (inst) { while (inst) {
VCCSinstance *next_inst = VCCSnextInstance(inst); VCCSinstance *next_inst = VCCSnextInstance(inst);
GENinstanceFree(GENinstanceOf(inst)); VCCSdelete(GENinstanceOf(inst));
inst = next_inst; inst = next_inst;
} }
GENmodelFree(GENmodelOf(mod)); VCCSmDelete(GENmodelOf(mod));
mod = next_mod; mod = next_mod;
} }

View File

@ -18,10 +18,10 @@ VCVSdestroy(GENmodel **inModel)
VCVSinstance *inst = VCVSinstances(mod); VCVSinstance *inst = VCVSinstances(mod);
while (inst) { while (inst) {
VCVSinstance *next_inst = VCVSnextInstance(inst); VCVSinstance *next_inst = VCVSnextInstance(inst);
GENinstanceFree(GENinstanceOf(inst)); VCVSdelete(GENinstanceOf(inst));
inst = next_inst; inst = next_inst;
} }
GENmodelFree(GENmodelOf(mod)); VCVSmDelete(GENmodelOf(mod));
mod = next_mod; mod = next_mod;
} }

View File

@ -12,6 +12,8 @@ Author: 1985 Thomas L. Quarles
int int
VSRCdelete(GENinstance *inst) VSRCdelete(GENinstance *inst)
{ {
VSRCinstance *here = (VSRCinstance *) inst;
FREE(here->VSRCcoeffs);
GENinstanceFree(inst); GENinstanceFree(inst);
return OK; return OK;
} }

View File

@ -18,11 +18,10 @@ VSRCdestroy(GENmodel **inModel)
VSRCinstance *inst = VSRCinstances(mod); VSRCinstance *inst = VSRCinstances(mod);
while (inst) { while (inst) {
VSRCinstance *next_inst = VSRCnextInstance(inst); VSRCinstance *next_inst = VSRCnextInstance(inst);
FREE(inst->VSRCcoeffs); VSRCdelete(GENinstanceOf(inst));
GENinstanceFree(GENinstanceOf(inst));
inst = next_inst; inst = next_inst;
} }
GENmodelFree(GENmodelOf(mod)); VSRCmDelete(GENmodelOf(mod));
mod = next_mod; mod = next_mod;
} }