Browse Source

spicelib/devcies/*dest.c, rewrite DEVdestroy() functions

pre-master-46
rlar 10 years ago
parent
commit
4d79617cf1
  1. 33
      src/spicelib/devices/asrc/asrcdest.c
  2. 38
      src/spicelib/devices/bjt/bjtdest.c
  3. 30
      src/spicelib/devices/bsim1/b1dest.c
  4. 31
      src/spicelib/devices/bsim2/b2dest.c
  5. 74
      src/spicelib/devices/bsim3/b3dest.c
  6. 36
      src/spicelib/devices/bsim3soi_dd/b3soidddest.c
  7. 36
      src/spicelib/devices/bsim3soi_fd/b3soifddest.c
  8. 36
      src/spicelib/devices/bsim3soi_pd/b3soipddest.c
  9. 34
      src/spicelib/devices/bsim3v0/b3v0dest.c
  10. 42
      src/spicelib/devices/bsim3v1/b3v1dest.c
  11. 61
      src/spicelib/devices/bsim3v32/b3v32dest.c
  12. 65
      src/spicelib/devices/bsim4/b4dest.c
  13. 64
      src/spicelib/devices/bsim4v5/b4v5dest.c
  14. 65
      src/spicelib/devices/bsim4v6/b4v6dest.c
  15. 66
      src/spicelib/devices/bsim4v7/b4v7dest.c
  16. 41
      src/spicelib/devices/bsimsoi/b4soidest.c
  17. 31
      src/spicelib/devices/cap/capdest.c
  18. 30
      src/spicelib/devices/cccs/cccsdest.c
  19. 29
      src/spicelib/devices/ccvs/ccvsdest.c
  20. 28
      src/spicelib/devices/cpl/cpldest.c
  21. 29
      src/spicelib/devices/csw/cswdest.c
  22. 29
      src/spicelib/devices/dio/diodest.c
  23. 28
      src/spicelib/devices/hfet1/hfetdest.c
  24. 35
      src/spicelib/devices/hfet2/hfet2dest.c
  25. 54
      src/spicelib/devices/hisim2/hsm2dest.c
  26. 41
      src/spicelib/devices/hisimhv1/hsmhvdest.c
  27. 49
      src/spicelib/devices/hisimhv2/hsmhv2dest.c
  28. 29
      src/spicelib/devices/ind/inddest.c
  29. 33
      src/spicelib/devices/ind/mutdest.c
  30. 33
      src/spicelib/devices/isrc/isrcdest.c
  31. 29
      src/spicelib/devices/jfet/jfetdest.c
  32. 29
      src/spicelib/devices/jfet2/jfet2dest.c
  33. 34
      src/spicelib/devices/ltra/ltradest.c
  34. 29
      src/spicelib/devices/mes/mesdest.c
  35. 28
      src/spicelib/devices/mesa/mesadest.c
  36. 33
      src/spicelib/devices/mos1/mos1dest.c
  37. 33
      src/spicelib/devices/mos2/mos2dest.c
  38. 33
      src/spicelib/devices/mos3/mos3dest.c
  39. 33
      src/spicelib/devices/mos6/mos6dest.c
  40. 33
      src/spicelib/devices/mos9/mos9dest.c
  41. 33
      src/spicelib/devices/nbjt/nbjtdest.c
  42. 33
      src/spicelib/devices/nbjt2/nbt2dest.c
  43. 38
      src/spicelib/devices/ndev/ndevdest.c
  44. 33
      src/spicelib/devices/numd/numddest.c
  45. 33
      src/spicelib/devices/numd2/nud2dest.c
  46. 32
      src/spicelib/devices/numos/nummdest.c
  47. 29
      src/spicelib/devices/res/resdest.c
  48. 33
      src/spicelib/devices/soi3/soi3dest.c
  49. 29
      src/spicelib/devices/sw/swdest.c
  50. 29
      src/spicelib/devices/tra/tradest.c
  51. 28
      src/spicelib/devices/txl/txldest.c
  52. 30
      src/spicelib/devices/urc/urcdest.c
  53. 35
      src/spicelib/devices/vbic/vbicdest.c
  54. 29
      src/spicelib/devices/vccs/vccsdest.c
  55. 29
      src/spicelib/devices/vcvs/vcvsdest.c
  56. 33
      src/spicelib/devices/vsrc/vsrcdest.c

33
src/spicelib/devices/asrc/asrcdest.c

@ -10,28 +10,25 @@ Author: 1987 Kanwar Jit Singh
void void
ASRCdestroy(GENmodel **model)
ASRCdestroy(GENmodel **inModel)
{ {
ASRCmodel **start = (ASRCmodel**) model; /* starting model */
ASRCinstance *here; /* current instance */
ASRCinstance *next;
ASRCmodel *mod = *start; /* current model */
ASRCmodel *nextmod;
ASRCmodel *mod = *(ASRCmodel**) inModel;
for (; mod ; mod = nextmod) {
for (here = mod->ASRCinstances; here; here = next) {
next = here->ASRCnextInstance;
FREE(here->ASRCacValues);
INPfreeTree(here->ASRCtree);
if (here->ASRCposptr)
free(here->ASRCposptr);
if (here->ASRCvars)
free(here->ASRCvars);
FREE(here);
while (mod) {
ASRCmodel *next_mod = mod->ASRCnextModel;
ASRCinstance *inst = mod->ASRCinstances;
while (inst) {
ASRCinstance *next_inst = inst->ASRCnextInstance;
INPfreeTree(inst->ASRCtree);
FREE(inst->ASRCacValues);
FREE(inst->ASRCposptr);
FREE(inst->ASRCvars);
FREE(inst);
inst = next_inst;
} }
nextmod = mod->ASRCnextModel;
FREE(mod); FREE(mod);
mod = next_mod;
} }
*model = NULL;
*inModel = NULL;
} }

38
src/spicelib/devices/bjt/bjtdest.c

@ -2,8 +2,6 @@
Copyright 1990 Regents of the University of California. All rights reserved. Copyright 1990 Regents of the University of California. All rights reserved.
Author: 1985 Thomas L. Quarles Author: 1985 Thomas L. Quarles
**********/ **********/
/*
*/
/* /*
* This routine deletes all BJTs from the circuit and frees * This routine deletes all BJTs from the circuit and frees
@ -17,31 +15,21 @@ Author: 1985 Thomas L. Quarles
void void
BJTdestroy(GENmodel **inModel) BJTdestroy(GENmodel **inModel)
{ {
BJTmodel *mod = *(BJTmodel**) inModel;
BJTmodel **model = (BJTmodel**)inModel;
BJTinstance *here;
BJTinstance *prev = NULL;
BJTmodel *mod = *model;
BJTmodel *oldmod = NULL;
for( ; mod ; mod = mod->BJTnextModel) {
if(oldmod) FREE(oldmod);
oldmod = mod;
prev = NULL;
for(here = mod->BJTinstances ; here ; here = here->BJTnextInstance) {
if(prev){
if(prev->BJTsens) FREE(prev->BJTsens);
FREE(prev);
}
prev = here;
}
if(prev){
if(prev->BJTsens) FREE(prev->BJTsens);
FREE(prev);
while (mod) {
BJTmodel *next_mod = mod->BJTnextModel;
BJTinstance *inst = mod->BJTinstances;
while (inst) {
BJTinstance *next_inst = inst->BJTnextInstance;
FREE(inst->BJTsens);
FREE(inst);
inst = next_inst;
} }
FREE(mod);
mod = next_mod;
} }
if(oldmod) FREE(oldmod);
*model = NULL;
*inModel = NULL;
} }

30
src/spicelib/devices/bsim1/b1dest.c

@ -2,8 +2,6 @@
Copyright 1990 Regents of the University of California. All rights reserved. Copyright 1990 Regents of the University of California. All rights reserved.
Author: 1985 Hong J. Park, Thomas L. Quarles Author: 1985 Hong J. Park, Thomas L. Quarles
**********/ **********/
/*
*/
#include "ngspice/ngspice.h" #include "ngspice/ngspice.h"
#include "bsim1def.h" #include "bsim1def.h"
@ -13,23 +11,19 @@ Author: 1985 Hong J. Park, Thomas L. Quarles
void void
B1destroy(GENmodel **inModel) B1destroy(GENmodel **inModel)
{ {
B1model *mod = *(B1model**) inModel;
B1model **model = (B1model**)inModel;
B1instance *here;
B1instance *prev = NULL;
B1model *mod = *model;
B1model *oldmod = NULL;
for( ; mod ; mod = mod->B1nextModel) {
if(oldmod) FREE(oldmod);
oldmod = mod;
prev = NULL;
for(here = mod->B1instances ; here ; here = here->B1nextInstance) {
if(prev) FREE(prev);
prev = here;
while (mod) {
B1model *next_mod = mod->B1nextModel;
B1instance *inst = mod->B1instances;
while (inst) {
B1instance *next_inst = inst->B1nextInstance;
FREE(inst);
inst = next_inst;
} }
if(prev) FREE(prev);
FREE(mod);
mod = next_mod;
} }
if(oldmod) FREE(oldmod);
*model = NULL;
*inModel = NULL;
} }

31
src/spicelib/devices/bsim2/b2dest.c

@ -2,8 +2,6 @@
Copyright 1990 Regents of the University of California. All rights reserved. Copyright 1990 Regents of the University of California. All rights reserved.
Author: 1985 Hong J. Park, Thomas L. Quarles Author: 1985 Hong J. Park, Thomas L. Quarles
**********/ **********/
/*
*/
#include "ngspice/ngspice.h" #include "ngspice/ngspice.h"
#include "bsim2def.h" #include "bsim2def.h"
@ -13,24 +11,19 @@ Author: 1985 Hong J. Park, Thomas L. Quarles
void void
B2destroy(GENmodel **inModel) B2destroy(GENmodel **inModel)
{ {
B2model *mod = *(B2model**) inModel;
B2model **model = (B2model**)inModel;
B2instance *here;
B2instance *prev = NULL;
B2model *mod = *model;
B2model *oldmod = NULL;
for( ; mod ; mod = mod->B2nextModel) {
if(oldmod) FREE(oldmod);
oldmod = mod;
prev = NULL;
for(here = mod->B2instances ; here ; here = here->B2nextInstance) {
if(prev) FREE(prev);
prev = here;
while (mod) {
B2model *next_mod = mod->B2nextModel;
B2instance *inst = mod->B2instances;
while (inst) {
B2instance *next_inst = inst->B2nextInstance;
FREE(inst);
inst = next_inst;
} }
if(prev) FREE(prev);
FREE(mod);
mod = next_mod;
} }
if(oldmod) FREE(oldmod);
*model = NULL;
}
*inModel = NULL;
}

74
src/spicelib/devices/bsim3/b3dest.c

@ -12,53 +12,41 @@
#include "bsim3def.h" #include "bsim3def.h"
#include "ngspice/suffix.h" #include "ngspice/suffix.h"
void void
BSIM3destroy(
GENmodel **inModel)
BSIM3destroy(GENmodel **inModel)
{ {
BSIM3model **model = (BSIM3model**)inModel;
BSIM3instance *here;
BSIM3instance *prev = NULL;
BSIM3model *mod = *model;
BSIM3model *oldmod = NULL;
for (; mod ; mod = mod->BSIM3nextModel) {
/** added to get rid of link list pSizeDependParamKnot **/
struct bsim3SizeDependParam *pParam, *pParamOld=NULL;
BSIM3model *mod = *(BSIM3model**) inModel;
pParam = mod->pSizeDependParamKnot;
for (; pParam ; pParam = pParam->pNext) {
FREE(pParamOld);
pParamOld = pParam;
}
FREE(pParamOld);
pParam = NULL;
/** end of extra code **/
if(oldmod) {
FREE(oldmod->BSIM3version);
FREE(oldmod);
}
oldmod = mod;
prev = NULL;
for (here = mod->BSIM3instances; here; here = here->BSIM3nextInstance) {
if(prev) FREE(prev);
prev = here;
}
if(prev) FREE(prev);
}
if(oldmod) {
#ifdef USE_OMP
#ifdef USE_OMP
/* free just once for all models */ /* free just once for all models */
FREE(oldmod->BSIM3InstanceArray);
#endif
/* oldmod->BSIM3modName to be freed in INPtabEnd() */
FREE(oldmod->BSIM3version);
FREE(oldmod);
}
*model = NULL;
return;
}
FREE(mod->BSIM3InstanceArray);
#endif
while (mod) {
BSIM3model *next_mod = mod->BSIM3nextModel;
BSIM3instance *inst = mod->BSIM3instances;
/** 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) {
BSIM3instance *next_inst = inst->BSIM3nextInstance;
FREE(inst);
inst = next_inst;
}
/* mod->BSIM3modName to be freed in INPtabEnd() */
FREE(mod->BSIM3version);
FREE(mod);
mod = next_mod;
}
*inModel = NULL;
}

36
src/spicelib/devices/bsim3soi_dd/b3soidddest.c

@ -6,7 +6,7 @@ Modified by Paolo Nenzi 2002
**********/ **********/
/* /*
* Revision 2.1 99/9/27 Pin Su
* Revision 2.1 99/9/27 Pin Su
* BSIMDD2.1 release * BSIMDD2.1 release
*/ */
@ -14,29 +14,23 @@ Modified by Paolo Nenzi 2002
#include "b3soidddef.h" #include "b3soidddef.h"
#include "ngspice/suffix.h" #include "ngspice/suffix.h"
void void
B3SOIDDdestroy(GENmodel **inModel) B3SOIDDdestroy(GENmodel **inModel)
{ {
B3SOIDDmodel **model = (B3SOIDDmodel**)inModel;
B3SOIDDinstance *here;
B3SOIDDinstance *prev = NULL;
B3SOIDDmodel *mod = *model;
B3SOIDDmodel *oldmod = NULL;
B3SOIDDmodel *mod = *(B3SOIDDmodel**) inModel;
for (; mod ; mod = mod->B3SOIDDnextModel)
{ if(oldmod) FREE(oldmod);
oldmod = mod;
prev = NULL;
for (here = mod->B3SOIDDinstances; here; here = here->B3SOIDDnextInstance)
{ if(prev) FREE(prev);
prev = here;
}
if(prev) FREE(prev);
while (mod) {
B3SOIDDmodel *next_mod = mod->B3SOIDDnextModel;
B3SOIDDinstance *inst = mod->B3SOIDDinstances;
while (inst) {
B3SOIDDinstance *next_inst = inst->B3SOIDDnextInstance;
FREE(inst);
inst = next_inst;
}
FREE(mod);
mod = next_mod;
} }
if(oldmod) FREE(oldmod);
*model = NULL;
return;
}
*inModel = NULL;
}

36
src/spicelib/devices/bsim3soi_fd/b3soifddest.c

@ -6,7 +6,7 @@ File: b3soifddest.c 98/5/01
**********/ **********/
/* /*
* Revision 2.1 99/9/27 Pin Su
* Revision 2.1 99/9/27 Pin Su
* BSIMFD2.1 release * BSIMFD2.1 release
*/ */
@ -14,29 +14,23 @@ File: b3soifddest.c 98/5/01
#include "b3soifddef.h" #include "b3soifddef.h"
#include "ngspice/suffix.h" #include "ngspice/suffix.h"
void void
B3SOIFDdestroy(GENmodel **inModel) B3SOIFDdestroy(GENmodel **inModel)
{ {
B3SOIFDmodel **model = (B3SOIFDmodel**)inModel;
B3SOIFDinstance *here;
B3SOIFDinstance *prev = NULL;
B3SOIFDmodel *mod = *model;
B3SOIFDmodel *oldmod = NULL;
B3SOIFDmodel *mod = *(B3SOIFDmodel**) inModel;
for (; mod ; mod = mod->B3SOIFDnextModel)
{ if(oldmod) FREE(oldmod);
oldmod = mod;
prev = NULL;
for (here = mod->B3SOIFDinstances; here; here = here->B3SOIFDnextInstance)
{ if(prev) FREE(prev);
prev = here;
}
if(prev) FREE(prev);
while (mod) {
B3SOIFDmodel *next_mod = mod->B3SOIFDnextModel;
B3SOIFDinstance *inst = mod->B3SOIFDinstances;
while (inst) {
B3SOIFDinstance *next_inst = inst->B3SOIFDnextInstance;
FREE(inst);
inst = next_inst;
}
FREE(mod);
mod = next_mod;
} }
if(oldmod) FREE(oldmod);
*model = NULL;
return;
}
*inModel = NULL;
}

36
src/spicelib/devices/bsim3soi_pd/b3soipddest.c

@ -6,7 +6,7 @@ Modified by Paolo Nenzi 2002
**********/ **********/
/* /*
* Revision 2.2.3 02/3/5 Pin Su
* Revision 2.2.3 02/3/5 Pin Su
* BSIMPD2.2.3 release * BSIMPD2.2.3 release
*/ */
@ -14,29 +14,23 @@ Modified by Paolo Nenzi 2002
#include "b3soipddef.h" #include "b3soipddef.h"
#include "ngspice/suffix.h" #include "ngspice/suffix.h"
void void
B3SOIPDdestroy(GENmodel **inModel) B3SOIPDdestroy(GENmodel **inModel)
{ {
B3SOIPDmodel **model = (B3SOIPDmodel**)inModel;
B3SOIPDinstance *here;
B3SOIPDinstance *prev = NULL;
B3SOIPDmodel *mod = *model;
B3SOIPDmodel *oldmod = NULL;
B3SOIPDmodel *mod = *(B3SOIPDmodel**) inModel;
for (; mod ; mod = mod->B3SOIPDnextModel)
{ if(oldmod) FREE(oldmod);
oldmod = mod;
prev = NULL;
for (here = mod->B3SOIPDinstances; here; here = here->B3SOIPDnextInstance)
{ if(prev) FREE(prev);
prev = here;
}
if(prev) FREE(prev);
while (mod) {
B3SOIPDmodel *next_mod = mod->B3SOIPDnextModel;
B3SOIPDinstance *inst = mod->B3SOIPDinstances;
while (inst) {
B3SOIPDinstance *next_inst = inst->B3SOIPDnextInstance;
FREE(inst);
inst = next_inst;
}
FREE(mod);
mod = next_mod;
} }
if(oldmod) FREE(oldmod);
*model = NULL;
return;
}
*inModel = NULL;
}

34
src/spicelib/devices/bsim3v0/b3v0dest.c

@ -8,29 +8,23 @@ File: b3v0dest.c
#include "bsim3v0def.h" #include "bsim3v0def.h"
#include "ngspice/suffix.h" #include "ngspice/suffix.h"
void void
BSIM3v0destroy(GENmodel **inModel) BSIM3v0destroy(GENmodel **inModel)
{ {
BSIM3v0model **model = (BSIM3v0model**)inModel;
BSIM3v0instance *here;
BSIM3v0instance *prev = NULL;
BSIM3v0model *mod = *model;
BSIM3v0model *oldmod = NULL;
BSIM3v0model *mod = *(BSIM3v0model**) inModel;
for (; mod ; mod = mod->BSIM3v0nextModel)
{ if(oldmod) FREE(oldmod);
oldmod = mod;
prev = NULL;
for (here = mod->BSIM3v0instances; here; here = here->BSIM3v0nextInstance)
{ if(prev) FREE(prev);
prev = here;
}
if(prev) FREE(prev);
while (mod) {
BSIM3v0model *next_mod = mod->BSIM3v0nextModel;
BSIM3v0instance *inst = mod->BSIM3v0instances;
while (inst) {
BSIM3v0instance *next_inst = inst->BSIM3v0nextInstance;
FREE(inst);
inst = next_inst;
}
FREE(mod);
mod = next_mod;
} }
if(oldmod) FREE(oldmod);
*model = NULL;
return;
}
*inModel = NULL;
}

42
src/spicelib/devices/bsim3v1/b3v1dest.c

@ -1,12 +1,12 @@
/********** /**********
* Copyright 1990 Regents of the University of California. All rights reserved. * Copyright 1990 Regents of the University of California. All rights reserved.
* File: b3v1dest.c * File: b3v1dest.c
* Author: 1995 Min-Chie Jeng and Mansun Chan.
* Author: 1995 Min-Chie Jeng and Mansun Chan.
* Modified by Paolo Nenzi 2002 * Modified by Paolo Nenzi 2002
**********/ **********/
/*
* Release Notes:
/*
* Release Notes:
* BSIM3v3.1, Released by yuhua 96/12/08 * BSIM3v3.1, Released by yuhua 96/12/08
*/ */
@ -14,29 +14,23 @@
#include "bsim3v1def.h" #include "bsim3v1def.h"
#include "ngspice/suffix.h" #include "ngspice/suffix.h"
void void
BSIM3v1destroy(GENmodel **inModel) BSIM3v1destroy(GENmodel **inModel)
{ {
BSIM3v1model **model = (BSIM3v1model**)inModel;
BSIM3v1instance *here;
BSIM3v1instance *prev = NULL;
BSIM3v1model *mod = *model;
BSIM3v1model *oldmod = NULL;
BSIM3v1model *mod = *(BSIM3v1model**) inModel;
for (; mod ; mod = mod->BSIM3v1nextModel)
{ if(oldmod) FREE(oldmod);
oldmod = mod;
prev = NULL;
for (here = mod->BSIM3v1instances; here; here = here->BSIM3v1nextInstance)
{ if(prev) FREE(prev);
prev = here;
}
if(prev) FREE(prev);
while (mod) {
BSIM3v1model *next_mod = mod->BSIM3v1nextModel;
BSIM3v1instance *inst = mod->BSIM3v1instances;
while (inst) {
BSIM3v1instance *next_inst = inst->BSIM3v1nextInstance;
FREE(inst);
inst = next_inst;
}
FREE(mod);
mod = next_mod;
} }
if(oldmod) FREE(oldmod);
*model = NULL;
return;
}
*inModel = NULL;
}

61
src/spicelib/devices/bsim3v32/b3v32dest.c

@ -13,48 +13,37 @@
#include "bsim3v32def.h" #include "bsim3v32def.h"
#include "ngspice/suffix.h" #include "ngspice/suffix.h"
void void
BSIM3v32destroy (GENmodel **inModel) BSIM3v32destroy (GENmodel **inModel)
{ {
BSIM3v32model **model = (BSIM3v32model**)inModel;
BSIM3v32instance *here;
BSIM3v32instance *prev = NULL;
BSIM3v32model *mod = *model;
BSIM3v32model *oldmod = NULL;
for (; mod ; mod = mod->BSIM3v32nextModel) {
/** added to get rid of link list pSizeDependParamKnot **/
struct bsim3v32SizeDependParam *pParam, *pParamOld=NULL;
BSIM3v32model *mod = *(BSIM3v32model**) inModel;
pParam = mod->pSizeDependParamKnot;
#ifdef USE_OMP
/* free just once for all models */
FREE(mod->BSIM3v32InstanceArray);
#endif
for (; pParam ; pParam = pParam->pNext) {
FREE(pParamOld);
pParamOld = pParam;
}
FREE(pParamOld);
pParam = NULL;
/** end of extra code **/
if(oldmod) {
FREE(oldmod->BSIM3v32version);
FREE(oldmod);
while (mod) {
BSIM3v32model *next_mod = mod->BSIM3v32nextModel;
BSIM3v32instance *inst = mod->BSIM3v32instances;
/** 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;
} }
oldmod = mod;
prev = NULL;
for (here = mod->BSIM3v32instances; here; here = here->BSIM3v32nextInstance) {
if(prev) FREE(prev);
prev = here;
/** end of extra code **/
while (inst) {
BSIM3v32instance *next_inst = inst->BSIM3v32nextInstance;
FREE(inst);
inst = next_inst;
} }
if(prev) FREE(prev);
FREE(mod->BSIM3v32version);
FREE(mod);
mod = next_mod;
} }
if(oldmod) {
#ifdef USE_OMP
/* free just once for all models */
FREE(oldmod->BSIM3v32InstanceArray);
#endif
FREE(oldmod->BSIM3v32version);
FREE(oldmod);
}
*model = NULL;
return;
*inModel = NULL;
} }

65
src/spicelib/devices/bsim4/b4dest.c

@ -14,50 +14,37 @@
#include "bsim4def.h" #include "bsim4def.h"
#include "ngspice/suffix.h" #include "ngspice/suffix.h"
void void
BSIM4destroy(
GENmodel **inModel)
BSIM4destroy(GENmodel **inModel)
{ {
BSIM4model **model = (BSIM4model**)inModel;
BSIM4instance *here;
BSIM4instance *prev = NULL;
BSIM4model *mod = *model;
BSIM4model *oldmod = NULL;
for (; mod ; mod = mod->BSIM4nextModel) {
/** added to get rid of link list pSizeDependParamKnot **/
struct bsim4SizeDependParam *pParam, *pParamOld=NULL;
BSIM4model *mod = *(BSIM4model**) inModel;
pParam = mod->pSizeDependParamKnot;
#ifdef USE_OMP
/* free just once for all models */
FREE(mod->BSIM4InstanceArray);
#endif
for (; pParam ; pParam = pParam->pNext) {
FREE(pParamOld);
pParamOld = pParam;
}
FREE(pParamOld);
pParam = NULL;
/** end of extra code **/
if(oldmod) {
FREE(oldmod->BSIM4version);
FREE(oldmod);
while (mod) {
BSIM4model *next_mod = mod->BSIM4nextModel;
BSIM4instance *inst = mod->BSIM4instances;
/** 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;
} }
oldmod = mod;
prev = (BSIM4instance *)NULL;
for (here = mod->BSIM4instances; here; here = here->BSIM4nextInstance) {
if(prev) FREE(prev);
prev = here;
/** end of extra code **/
while (inst) {
BSIM4instance *next_inst = inst->BSIM4nextInstance;
FREE(inst);
inst = next_inst;
} }
if(prev) FREE(prev);
FREE(mod->BSIM4version);
FREE(mod);
mod = next_mod;
} }
if(oldmod) {
#ifdef USE_OMP
/* free just once for all models */
FREE(oldmod->BSIM4InstanceArray);
#endif
/* oldmod->BSIM4modName to be freed in INPtabEnd() */
FREE(oldmod->BSIM4version);
FREE(oldmod);
}
*model = NULL;
return;
*inModel = NULL;
} }

64
src/spicelib/devices/bsim4v5/b4v5dest.c

@ -12,49 +12,37 @@
#include "bsim4v5def.h" #include "bsim4v5def.h"
#include "ngspice/suffix.h" #include "ngspice/suffix.h"
void void
BSIM4v5destroy(
GENmodel **inModel)
BSIM4v5destroy(GENmodel **inModel)
{ {
BSIM4v5model **model = (BSIM4v5model**)inModel;
BSIM4v5instance *here;
BSIM4v5instance *prev = NULL;
BSIM4v5model *mod = *model;
BSIM4v5model *oldmod = NULL;
for (; mod ; mod = mod->BSIM4v5nextModel) {
/** added to get rid of link list pSizeDependParamKnot **/
struct bsim4v5SizeDependParam *pParam, *pParamOld=NULL;
BSIM4v5model *mod = *(BSIM4v5model**) inModel;
pParam = mod->pSizeDependParamKnot;
#ifdef USE_OMP
/* free just once for all models */
FREE(mod->BSIM4v5InstanceArray);
#endif
for (; pParam ; pParam = pParam->pNext) {
FREE(pParamOld);
pParamOld = pParam;
}
FREE(pParamOld);
pParam = NULL;
/** end of extra code **/
if (oldmod) {
FREE(oldmod->BSIM4v5version);
FREE(oldmod);
while (mod) {
BSIM4v5model *next_mod = mod->BSIM4v5nextModel;
BSIM4v5instance *inst = mod->BSIM4v5instances;
/** 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;
} }
oldmod = mod;
prev = NULL;
for (here = mod->BSIM4v5instances; here; here = here->BSIM4v5nextInstance) {
if(prev) FREE(prev);
prev = here;
/** end of extra code **/
while (inst) {
BSIM4v5instance *next_inst = inst->BSIM4v5nextInstance;
FREE(inst);
inst = next_inst;
} }
if(prev) FREE(prev);
FREE(mod->BSIM4v5version);
FREE(mod);
mod = next_mod;
} }
if (oldmod) {
#ifdef USE_OMP
/* free just once for all models */
FREE(oldmod->BSIM4v5InstanceArray);
#endif
FREE(oldmod->BSIM4v5version);
FREE(oldmod);
}
*model = NULL;
return;
*inModel = NULL;
} }

65
src/spicelib/devices/bsim4v6/b4v6dest.c

@ -14,50 +14,37 @@
#include "bsim4v6def.h" #include "bsim4v6def.h"
#include "ngspice/suffix.h" #include "ngspice/suffix.h"
void void
BSIM4v6destroy(
GENmodel **inModel)
BSIM4v6destroy(GENmodel **inModel)
{ {
BSIM4v6model **model = (BSIM4v6model**)inModel;
BSIM4v6instance *here;
BSIM4v6instance *prev = NULL;
BSIM4v6model *mod = *model;
BSIM4v6model *oldmod = NULL;
for (; mod ; mod = mod->BSIM4v6nextModel) {
/** added to get rid of link list pSizeDependParamKnot **/
struct bsim4v6SizeDependParam *pParam, *pParamOld=NULL;
pParam = mod->pSizeDependParamKnot;
BSIM4v6model *mod = *(BSIM4v6model**) inModel;
for (; pParam ; pParam = pParam->pNext) {
FREE(pParamOld);
pParamOld = pParam;
}
FREE(pParamOld);
pParam = NULL;
/** end of extra code **/
#ifdef USE_OMP
/* free just once for all models */
FREE(mod->BSIM4v6InstanceArray);
#endif
if (oldmod) {
FREE(oldmod->BSIM4v6version);
FREE(oldmod);
while (mod) {
BSIM4v6model *next_mod = mod->BSIM4v6nextModel;
BSIM4v6instance *inst = mod->BSIM4v6instances;
/** 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;
} }
oldmod = mod;
prev = NULL;
for (here = mod->BSIM4v6instances; here; here = here->BSIM4v6nextInstance) {
if(prev) FREE(prev);
prev = here;
/** end of extra code **/
while (inst) {
BSIM4v6instance *next_inst = inst->BSIM4v6nextInstance;
FREE(inst);
inst = next_inst;
} }
if(prev) FREE(prev);
FREE(mod->BSIM4v6version);
FREE(mod);
mod = next_mod;
} }
if(oldmod) {
#ifdef USE_OMP
/* free just once for all models */
FREE(oldmod->BSIM4v6InstanceArray);
#endif
FREE(oldmod->BSIM4v6version);
FREE(oldmod);
}
*model = NULL;
return;
*inModel = NULL;
} }

66
src/spicelib/devices/bsim4v7/b4v7dest.c

@ -14,50 +14,38 @@
#include "bsim4v7def.h" #include "bsim4v7def.h"
#include "ngspice/suffix.h" #include "ngspice/suffix.h"
void void
BSIM4v7destroy(
GENmodel **inModel)
BSIM4v7destroy(GENmodel **inModel)
{ {
BSIM4v7model **model = (BSIM4v7model**)inModel;
BSIM4v7instance *here;
BSIM4v7instance *prev = NULL;
BSIM4v7model *mod = *model;
BSIM4v7model *oldmod = NULL;
for (; mod ; mod = mod->BSIM4v7nextModel) {
/** added to get rid of link list pSizeDependParamKnot **/
struct bsim4SizeDependParam *pParam, *pParamOld=NULL;
BSIM4v7model *mod = *(BSIM4v7model**) inModel;
pParam = mod->pSizeDependParamKnot;
#ifdef USE_OMP
/* free just once for all models */
FREE(mod->BSIM4v7InstanceArray);
#endif
for (; pParam ; pParam = pParam->pNext) {
FREE(pParamOld);
pParamOld = pParam;
}
FREE(pParamOld);
pParam = NULL;
/** end of extra code **/
if(oldmod) {
FREE(oldmod->BSIM4v7version);
FREE(oldmod);
while (mod) {
BSIM4v7model *next_mod = mod->BSIM4v7nextModel;
BSIM4v7instance *inst = mod->BSIM4v7instances;
/** 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;
} }
oldmod = mod;
prev = (BSIM4v7instance *)NULL;
for (here = mod->BSIM4v7instances; here; here = here->BSIM4v7nextInstance) {
if(prev) FREE(prev);
prev = here;
/** end of extra code **/
while (inst) {
BSIM4v7instance *next_inst = inst->BSIM4v7nextInstance;
FREE(inst);
inst = next_inst;
} }
if(prev) FREE(prev);
/* mod->BSIM4v7modName to be freed in INPtabEnd() */
FREE(mod->BSIM4v7version);
FREE(mod);
mod = next_mod;
} }
if(oldmod) {
#ifdef USE_OMP
/* free just once for all models */
FREE(oldmod->BSIM4v7InstanceArray);
#endif
/* oldmod->BSIM4v7modName to be freed in INPtabEnd() */
FREE(oldmod->BSIM4v7version);
FREE(oldmod);
}
*model = NULL;
return;
*inModel = NULL;
} }

41
src/spicelib/devices/bsimsoi/b4soidest.c

@ -15,35 +15,26 @@
**********/ **********/
#include "ngspice/ngspice.h" #include "ngspice/ngspice.h"
#include "b4soidef.h" #include "b4soidef.h"
#include "ngspice/suffix.h" #include "ngspice/suffix.h"
void void
B4SOIdestroy(
GENmodel **inModel)
B4SOIdestroy(GENmodel **inModel)
{ {
B4SOImodel **model = (B4SOImodel**)inModel;
B4SOIinstance *here;
B4SOIinstance *prev = NULL;
B4SOImodel *mod = *model;
B4SOImodel *oldmod = NULL;
for (; mod ; mod = mod->B4SOInextModel)
{ if(oldmod) FREE(oldmod);
oldmod = mod;
prev = (B4SOIinstance *)NULL;
for (here = mod->B4SOIinstances; here; here = here->B4SOInextInstance)
{
if(prev) FREE(prev);
prev = here;
}
if(prev) FREE(prev);
B4SOImodel *mod = *(B4SOImodel**) inModel;
while (mod) {
B4SOImodel *next_mod = mod->B4SOInextModel;
B4SOIinstance *inst = mod->B4SOIinstances;
while (inst) {
B4SOIinstance *next_inst = inst->B4SOInextInstance;
FREE(inst);
inst = next_inst;
}
FREE(mod);
mod = next_mod;
} }
if(oldmod) FREE(oldmod);
*model = NULL;
return;
}
*inModel = NULL;
}

31
src/spicelib/devices/cap/capdest.c

@ -3,8 +3,6 @@ Copyright 1990 Regents of the University of California. All rights reserved.
Author: 1985 Thomas L. Quarles Author: 1985 Thomas L. Quarles
Modified: September 2003 Paolo Nenzi Modified: September 2003 Paolo Nenzi
**********/ **********/
/*
*/
#include "ngspice/ngspice.h" #include "ngspice/ngspice.h"
#include "capdefs.h" #include "capdefs.h"
@ -13,25 +11,20 @@ Modified: September 2003 Paolo Nenzi
void void
CAPdestroy(GENmodel **inModel) CAPdestroy(GENmodel **inModel)
{ {
CAPmodel *mod = *(CAPmodel**) inModel;
CAPmodel **model = (CAPmodel**)inModel;
CAPinstance *here;
CAPinstance *prev = NULL;
CAPmodel *mod = *model;
CAPmodel *oldmod = NULL;
for( ; mod ; mod = mod->CAPnextModel) {
if(oldmod) FREE(oldmod);
oldmod = mod;
prev = NULL;
for(here = mod->CAPinstances ; here ; here = here->CAPnextInstance) {
if(prev) FREE(prev);
prev = here;
while (mod) {
CAPmodel *next_mod = mod->CAPnextModel;
CAPinstance *inst = mod->CAPinstances;
while (inst) {
CAPinstance *next_inst = inst->CAPnextInstance;
FREE(inst);
inst = next_inst;
} }
if(prev) FREE(prev);
FREE(mod);
mod = next_mod;
} }
if(oldmod) FREE(oldmod);
*model = NULL;
*inModel = NULL;
} }

30
src/spicelib/devices/cccs/cccsdest.c

@ -2,8 +2,6 @@
Copyright 1990 Regents of the University of California. All rights reserved. Copyright 1990 Regents of the University of California. All rights reserved.
Author: 1985 Thomas L. Quarles Author: 1985 Thomas L. Quarles
**********/ **********/
/*
*/
#include "ngspice/ngspice.h" #include "ngspice/ngspice.h"
#include "cccsdefs.h" #include "cccsdefs.h"
@ -12,24 +10,20 @@ Author: 1985 Thomas L. Quarles
void void
CCCSdestroy(GENmodel **inModel) CCCSdestroy(GENmodel **inModel)
{ {
CCCSmodel **model = (CCCSmodel**)inModel;
CCCSinstance *here;
CCCSinstance *prev = NULL;
CCCSmodel *mod = *model;
CCCSmodel *oldmod = NULL;
CCCSmodel *mod = *(CCCSmodel**) inModel;
for( ; mod ; mod = mod->CCCSnextModel) {
if(oldmod) FREE(oldmod);
oldmod = mod;
prev = NULL;
for(here = mod->CCCSinstances ; here ; here = here->CCCSnextInstance) {
if(prev) FREE(prev);
prev = here;
while (mod) {
CCCSmodel *next_mod = mod->CCCSnextModel;
CCCSinstance *inst = mod->CCCSinstances;
while (inst) {
CCCSinstance *next_inst = inst->CCCSnextInstance;
FREE(inst);
inst = next_inst;
} }
if(prev) FREE(prev);
FREE(mod);
mod = next_mod;
} }
if(oldmod) FREE(oldmod);
*model = NULL;
*inModel = NULL;
} }

29
src/spicelib/devices/ccvs/ccvsdest.c

@ -2,8 +2,6 @@
Copyright 1990 Regents of the University of California. All rights reserved. Copyright 1990 Regents of the University of California. All rights reserved.
Author: 1985 Thomas L. Quarles Author: 1985 Thomas L. Quarles
**********/ **********/
/*
*/
#include "ngspice/ngspice.h" #include "ngspice/ngspice.h"
#include "ccvsdefs.h" #include "ccvsdefs.h"
@ -13,22 +11,19 @@ Author: 1985 Thomas L. Quarles
void void
CCVSdestroy(GENmodel **inModel) CCVSdestroy(GENmodel **inModel)
{ {
CCVSmodel **model = (CCVSmodel**)inModel;
CCVSinstance *here;
CCVSinstance *prev = NULL;
CCVSmodel *mod = *model;
CCVSmodel *oldmod = NULL;
CCVSmodel *mod = *(CCVSmodel**) inModel;
for( ; mod ; mod = mod->CCVSnextModel) {
if(oldmod) FREE(oldmod);
oldmod = mod;
prev = NULL;
for(here = mod->CCVSinstances ; here ; here = here->CCVSnextInstance) {
if(prev) FREE(prev);
prev = here;
while (mod) {
CCVSmodel *next_mod = mod->CCVSnextModel;
CCVSinstance *inst = mod->CCVSinstances;
while (inst) {
CCVSinstance *next_inst = inst->CCVSnextInstance;
FREE(inst);
inst = next_inst;
} }
if(prev) FREE(prev);
FREE(mod);
mod = next_mod;
} }
if(oldmod) FREE(oldmod);
*model = NULL;
*inModel = NULL;
} }

28
src/spicelib/devices/cpl/cpldest.c

@ -8,25 +8,23 @@ Author: 1992 Charles Hough
#include "cpldefs.h" #include "cpldefs.h"
#include "ngspice/suffix.h" #include "ngspice/suffix.h"
void void
CPLdestroy(GENmodel **inModel) CPLdestroy(GENmodel **inModel)
{ {
CPLmodel **model = (CPLmodel **)inModel;
CPLinstance *here;
CPLinstance *prev = NULL;
CPLmodel *mod = *model;
CPLmodel *oldmod = NULL;
CPLmodel *mod = *(CPLmodel **) inModel;
for( ; mod ; mod = mod->CPLnextModel) {
if(oldmod) FREE(oldmod);
oldmod = mod;
prev = NULL;
for(here = mod->CPLinstances ; here ; here = here->CPLnextInstance) {
if(prev) FREE(prev);
prev = here;
while (mod) {
CPLmodel *next_mod = mod->CPLnextModel;
CPLinstance *inst = mod->CPLinstances;
while (inst) {
CPLinstance *next_inst = inst->CPLnextInstance;
FREE(inst);
inst = next_inst;
} }
if(prev) FREE(prev);
FREE(mod);
mod = next_mod;
} }
if(oldmod) FREE(oldmod);
*model = NULL;
*inModel = NULL;
} }

29
src/spicelib/devices/csw/cswdest.c

@ -2,8 +2,6 @@
Copyright 1990 Regents of the University of California. All rights reserved. Copyright 1990 Regents of the University of California. All rights reserved.
Author: 1985 Gordon Jacobs Author: 1985 Gordon Jacobs
**********/ **********/
/*
*/
#include "ngspice/ngspice.h" #include "ngspice/ngspice.h"
#include "cswdefs.h" #include "cswdefs.h"
@ -13,22 +11,19 @@ Author: 1985 Gordon Jacobs
void void
CSWdestroy(GENmodel **inModel) CSWdestroy(GENmodel **inModel)
{ {
CSWmodel **model = (CSWmodel**)inModel;
CSWinstance *here;
CSWinstance *prev = NULL;
CSWmodel *mod = *model;
CSWmodel *oldmod = NULL;
CSWmodel *mod = *(CSWmodel**) inModel;
for( ; mod ; mod = mod->CSWnextModel) {
if(oldmod) FREE(oldmod);
oldmod = mod;
prev = NULL;
for(here = mod->CSWinstances ; here ; here = here->CSWnextInstance) {
if(prev) FREE(prev);
prev = here;
while (mod) {
CSWmodel *next_mod = mod->CSWnextModel;
CSWinstance *inst = mod->CSWinstances;
while (inst) {
CSWinstance *next_inst = inst->CSWnextInstance;
FREE(inst);
inst = next_inst;
} }
if(prev) FREE(prev);
FREE(mod);
mod = next_mod;
} }
if(oldmod) FREE(oldmod);
*model = NULL;
*inModel = NULL;
} }

29
src/spicelib/devices/dio/diodest.c

@ -2,8 +2,6 @@
Copyright 1990 Regents of the University of California. All rights reserved. Copyright 1990 Regents of the University of California. All rights reserved.
Author: 1985 Thomas L. Quarles Author: 1985 Thomas L. Quarles
**********/ **********/
/*
*/
#include "ngspice/ngspice.h" #include "ngspice/ngspice.h"
#include "diodefs.h" #include "diodefs.h"
@ -13,22 +11,19 @@ Author: 1985 Thomas L. Quarles
void void
DIOdestroy(GENmodel **inModel) DIOdestroy(GENmodel **inModel)
{ {
DIOmodel **model = (DIOmodel**)inModel;
DIOinstance *here;
DIOinstance *prev = NULL;
DIOmodel *mod = *model;
DIOmodel *oldmod = NULL;
DIOmodel *mod = *(DIOmodel**) inModel;
for( ; mod ; mod = mod->DIOnextModel) {
if(oldmod) FREE(oldmod);
oldmod = mod;
prev = NULL;
for(here = mod->DIOinstances ; here ; here = here->DIOnextInstance) {
if(prev) FREE(prev);
prev = here;
while (mod) {
DIOmodel *next_mod = mod->DIOnextModel;
DIOinstance *inst = mod->DIOinstances;
while (inst) {
DIOinstance *next_inst = inst->DIOnextInstance;
FREE(inst);
inst = next_inst;
} }
if(prev) FREE(prev);
FREE(mod);
mod = next_mod;
} }
if(oldmod) FREE(oldmod);
*model = NULL;
*inModel = NULL;
} }

28
src/spicelib/devices/hfet1/hfetdest.c

@ -11,23 +11,19 @@ Modified: Paolo Nenzi
void void
HFETAdestroy(GENmodel **inModel) HFETAdestroy(GENmodel **inModel)
{ {
HFETAmodel **model = (HFETAmodel**)inModel;
HFETAinstance *here;
HFETAinstance *prev = NULL;
HFETAmodel *mod = *model;
HFETAmodel *oldmod = NULL;
HFETAmodel *mod = *(HFETAmodel**) inModel;
for( ; mod ; mod = mod->HFETAnextModel) {
if(oldmod) FREE(oldmod);
oldmod = mod;
prev = NULL;
for(here = mod->HFETAinstances ; here ; here = here->HFETAnextInstance) {
if(prev) FREE(prev);
prev = here;
while (mod) {
HFETAmodel *next_mod = mod->HFETAnextModel;
HFETAinstance *inst = mod->HFETAinstances;
while (inst) {
HFETAinstance *next_inst = inst->HFETAnextInstance;
FREE(inst);
inst = next_inst;
} }
if(prev) FREE(prev);
FREE(mod);
mod = next_mod;
} }
if(oldmod) FREE(oldmod);
*model = NULL;
return;
*inModel = NULL;
} }

35
src/spicelib/devices/hfet2/hfet2dest.c

@ -8,27 +8,22 @@ Modified: Paolo Nenzi
#include "ngspice/suffix.h" #include "ngspice/suffix.h"
void HFET2destroy(GENmodel **inModel)
void
HFET2destroy(GENmodel **inModel)
{ {
HFET2model *mod = *(HFET2model**) inModel;
HFET2model **model = (HFET2model**)inModel;
HFET2instance *here;
HFET2instance *prev = NULL;
HFET2model *mod = *model;
HFET2model *oldmod = NULL;
for( ; mod ; mod = mod->HFET2nextModel) {
if(oldmod) FREE(oldmod);
oldmod = mod;
prev = NULL;
for(here = mod->HFET2instances ; here ; here = here->HFET2nextInstance) {
if(prev) FREE(prev);
prev = here;
while (mod) {
HFET2model *next_mod = mod->HFET2nextModel;
HFET2instance *inst = mod->HFET2instances;
while (inst) {
HFET2instance *next_inst = inst->HFET2nextInstance;
FREE(inst);
inst = next_inst;
}
FREE(mod);
mod = next_mod;
} }
if(prev) FREE(prev);
}
if(oldmod) FREE(oldmod);
*model = NULL;
return;
*inModel = NULL;
} }

54
src/spicelib/devices/hisim2/hsm2dest.c

@ -5,12 +5,12 @@
MODEL NAME : HiSIM MODEL NAME : HiSIM
( VERSION : 2 SUBVERSION : 8 REVISION : 0 ) ( VERSION : 2 SUBVERSION : 8 REVISION : 0 )
FILE : hsm2dest.c FILE : hsm2dest.c
Date : 2014.6.5 Date : 2014.6.5
released by
released by
Hiroshima University & Hiroshima University &
Semiconductor Technology Academic Research Center (STARC) Semiconductor Technology Academic Research Center (STARC)
***********************************************************************/ ***********************************************************************/
@ -31,8 +31,8 @@ support. Hiroshima University or STARC and its employees are not liable
for the condition or performance of the software. for the condition or performance of the software.
Hiroshima University and STARC own the copyright and grant users a perpetual, Hiroshima University and STARC own the copyright and grant users a perpetual,
irrevocable, worldwide, non-exclusive, royalty-free license with respect
to the software as set forth below.
irrevocable, worldwide, non-exclusive, royalty-free license with respect
to the software as set forth below.
Hiroshima University and STARC hereby disclaim all implied warranties. Hiroshima University and STARC hereby disclaim all implied warranties.
@ -58,32 +58,28 @@ to others."
#include "hsm2def.h" #include "hsm2def.h"
#include "ngspice/suffix.h" #include "ngspice/suffix.h"
void HSM2destroy(
GENmodel **inModel)
void
HSM2destroy(GENmodel **inModel)
{ {
HSM2model **model = (HSM2model**)inModel;
HSM2instance *here;
HSM2instance *prev = NULL;
HSM2model *mod = *model;
HSM2model *oldmod = NULL;
for ( ;mod ;mod = mod->HSM2nextModel ) {
if (oldmod) FREE(oldmod);
oldmod = mod;
prev = (HSM2instance *)NULL;
for ( here = mod->HSM2instances ;here ;here = here->HSM2nextInstance ) {
if (prev) FREE(prev);
prev = here;
}
if (prev) FREE(prev);
}
if (oldmod) {
HSM2model *mod = *(HSM2model**) inModel;
#ifdef USE_OMP #ifdef USE_OMP
/* free just once for all models */
FREE(oldmod->HSM2InstanceArray);
/* free just once for all models */
FREE(mod->HSM2InstanceArray);
#endif #endif
FREE(oldmod);
}
*model = NULL;
}
while (mod) {
HSM2model *next_mod = mod->HSM2nextModel;
HSM2instance *inst = mod->HSM2instances;
while (inst) {
HSM2instance *next_inst = inst->HSM2nextInstance;
FREE(inst);
inst = next_inst;
}
FREE(mod);
mod = next_mod;
}
*inModel = NULL;
}

41
src/spicelib/devices/hisimhv1/hsmhvdest.c

@ -3,14 +3,14 @@
HiSIM (Hiroshima University STARC IGFET Model) HiSIM (Hiroshima University STARC IGFET Model)
Copyright (C) 2012 Hiroshima University & STARC Copyright (C) 2012 Hiroshima University & STARC
MODEL NAME : HiSIM_HV
MODEL NAME : HiSIM_HV
( VERSION : 1 SUBVERSION : 2 REVISION : 4 ) ( VERSION : 1 SUBVERSION : 2 REVISION : 4 )
Model Parameter VERSION : 1.23 Model Parameter VERSION : 1.23
FILE : hsmhvdest.c FILE : hsmhvdest.c
DATE : 2013.04.30 DATE : 2013.04.30
released by
released by
Hiroshima University & Hiroshima University &
Semiconductor Technology Academic Research Center (STARC) Semiconductor Technology Academic Research Center (STARC)
***********************************************************************/ ***********************************************************************/
@ -19,26 +19,23 @@
#include "hsmhvdef.h" #include "hsmhvdef.h"
#include "ngspice/suffix.h" #include "ngspice/suffix.h"
void HSMHVdestroy(
GENmodel **inModel)
void
HSMHVdestroy(GENmodel **inModel)
{ {
HSMHVmodel **model = (HSMHVmodel**)inModel;
HSMHVinstance *here;
HSMHVinstance *prev = NULL;
HSMHVmodel *mod = *model;
HSMHVmodel *oldmod = NULL;
for ( ;mod ;mod = mod->HSMHVnextModel ) {
if (oldmod) FREE(oldmod);
oldmod = mod;
prev = (HSMHVinstance *)NULL;
for ( here = mod->HSMHVinstances ;here ;here = here->HSMHVnextInstance ) {
if (prev) FREE(prev);
prev = here;
HSMHVmodel *mod = *(HSMHVmodel**) inModel;
while (mod) {
HSMHVmodel *next_mod = mod->HSMHVnextModel;
HSMHVinstance *inst = mod->HSMHVinstances;
while (inst) {
HSMHVinstance *next_inst = inst->HSMHVnextInstance;
FREE(inst);
inst = next_inst;
}
FREE(mod);
mod = next_mod;
} }
if (prev) FREE(prev);
}
if (oldmod) FREE(oldmod);
*model = NULL;
}
*inModel = NULL;
}

49
src/spicelib/devices/hisimhv2/hsmhv2dest.c

@ -3,14 +3,14 @@
HiSIM (Hiroshima University STARC IGFET Model) HiSIM (Hiroshima University STARC IGFET Model)
Copyright (C) 2014 Hiroshima University & STARC Copyright (C) 2014 Hiroshima University & STARC
MODEL NAME : HiSIM_HV
( VERSION : 2 SUBVERSION : 2 REVISION : 0 )
MODEL NAME : HiSIM_HV
( VERSION : 2 SUBVERSION : 2 REVISION : 0 )
Model Parameter 'VERSION' : 2.20 Model Parameter 'VERSION' : 2.20
FILE : hsmhvdest.c FILE : hsmhvdest.c
DATE : 2014.6.11 DATE : 2014.6.11
released by
released by
Hiroshima University & Hiroshima University &
Semiconductor Technology Academic Research Center (STARC) Semiconductor Technology Academic Research Center (STARC)
***********************************************************************/ ***********************************************************************/
@ -31,8 +31,8 @@ support. Hiroshima University or STARC and its employees are not liable
for the condition or performance of the software. for the condition or performance of the software.
Hiroshima University and STARC own the copyright and grant users a perpetual, Hiroshima University and STARC own the copyright and grant users a perpetual,
irrevocable, worldwide, non-exclusive, royalty-free license with respect
to the software as set forth below.
irrevocable, worldwide, non-exclusive, royalty-free license with respect
to the software as set forth below.
Hiroshima University and STARC hereby disclaims all implied warranties. Hiroshima University and STARC hereby disclaims all implied warranties.
@ -54,33 +54,30 @@ to others."
Toshimasa Asahara, President, Hiroshima University Toshimasa Asahara, President, Hiroshima University
Mitiko Miura-Mattausch, Professor, Hiroshima University Mitiko Miura-Mattausch, Professor, Hiroshima University
Katsuhiro Shimohigashi, President&CEO, STARC Katsuhiro Shimohigashi, President&CEO, STARC
June 2008 (revised October 2011)
June 2008 (revised October 2011)
*************************************************************************/ *************************************************************************/
#include "ngspice/ngspice.h" #include "ngspice/ngspice.h"
#include "hsmhv2def.h" #include "hsmhv2def.h"
#include "ngspice/suffix.h" #include "ngspice/suffix.h"
void HSMHV2destroy(
GENmodel **inModel)
void
HSMHV2destroy(GENmodel **inModel)
{ {
HSMHV2model **model = (HSMHV2model**)inModel;
HSMHV2instance *here;
HSMHV2instance *prev = NULL;
HSMHV2model *mod = *model;
HSMHV2model *oldmod = NULL;
for ( ;mod ;mod = mod->HSMHV2nextModel ) {
if (oldmod) FREE(oldmod);
oldmod = mod;
prev = (HSMHV2instance *)NULL;
for ( here = mod->HSMHV2instances ;here ;here = here->HSMHV2nextInstance ) {
if (prev) FREE(prev);
prev = here;
HSMHV2model *mod = *(HSMHV2model**) inModel;
while (mod) {
HSMHV2model *next_mod = mod->HSMHV2nextModel;
HSMHV2instance *inst = mod->HSMHV2instances;
while (inst) {
HSMHV2instance *next_inst = inst->HSMHV2nextInstance;
FREE(inst);
inst = next_inst;
}
FREE(mod);
mod = next_mod;
} }
if (prev) FREE(prev);
}
if (oldmod) FREE(oldmod);
*model = NULL;
}
*inModel = NULL;
}

29
src/spicelib/devices/ind/inddest.c

@ -2,8 +2,6 @@
Copyright 1990 Regents of the University of California. All rights reserved. Copyright 1990 Regents of the University of California. All rights reserved.
Author: 1985 Thomas L. Quarles Author: 1985 Thomas L. Quarles
**********/ **********/
/*
*/
#include "ngspice/ngspice.h" #include "ngspice/ngspice.h"
#include "inddefs.h" #include "inddefs.h"
@ -13,22 +11,19 @@ Author: 1985 Thomas L. Quarles
void void
INDdestroy(GENmodel **inModel) INDdestroy(GENmodel **inModel)
{ {
INDmodel **model = (INDmodel**)inModel;
INDinstance *here;
INDinstance *prev = NULL;
INDmodel *mod = *model;
INDmodel *oldmod = NULL;
INDmodel *mod = *(INDmodel**) inModel;
for( ; mod ; mod = mod->INDnextModel) {
if(oldmod) FREE(oldmod);
oldmod = mod;
prev = NULL;
for(here = mod->INDinstances ; here ; here = here->INDnextInstance) {
if(prev) FREE(prev);
prev = here;
while (mod) {
INDmodel *next_mod = mod->INDnextModel;
INDinstance *inst = mod->INDinstances;
while (inst) {
INDinstance *next_inst = inst->INDnextInstance;
FREE(inst);
inst = next_inst;
} }
if(prev) FREE(prev);
FREE(mod);
mod = next_mod;
} }
if(oldmod) FREE(oldmod);
*model = NULL;
*inModel = NULL;
} }

33
src/spicelib/devices/ind/mutdest.c

@ -2,8 +2,6 @@
Copyright 1990 Regents of the University of California. All rights reserved. Copyright 1990 Regents of the University of California. All rights reserved.
Author: 1985 Thomas L. Quarles Author: 1985 Thomas L. Quarles
**********/ **********/
/*
*/
#include "ngspice/ngspice.h" #include "ngspice/ngspice.h"
#include "inddefs.h" #include "inddefs.h"
@ -11,26 +9,25 @@ Author: 1985 Thomas L. Quarles
#ifdef MUTUAL #ifdef MUTUAL
void void
MUTdestroy(GENmodel **inModel) MUTdestroy(GENmodel **inModel)
{ {
MUTmodel **model = (MUTmodel**)inModel;
MUTinstance *here;
MUTinstance *prev = NULL;
MUTmodel *mod = *model;
MUTmodel *oldmod = NULL;
MUTmodel *mod = *(MUTmodel**) inModel;
for( ; mod ; mod = mod->MUTnextModel) {
if(oldmod) FREE(oldmod);
oldmod = mod;
prev = NULL;
for(here = mod->MUTinstances ; here ; here = here->MUTnextInstance) {
if(prev) FREE(prev);
prev = here;
while (mod) {
MUTmodel *next_mod = mod->MUTnextModel;
MUTinstance *inst = mod->MUTinstances;
while (inst) {
MUTinstance *next_inst = inst->MUTnextInstance;
FREE(inst);
inst = next_inst;
} }
if(prev) FREE(prev);
FREE(mod);
mod = next_mod;
} }
if(oldmod) FREE(oldmod);
*model = NULL;
*inModel = NULL;
} }
#endif /* MUTUAL */
#endif

33
src/spicelib/devices/isrc/isrcdest.c

@ -2,8 +2,6 @@
Copyright 1990 Regents of the University of California. All rights reserved. Copyright 1990 Regents of the University of California. All rights reserved.
Author: 1985 Thomas L. Quarles Author: 1985 Thomas L. Quarles
**********/ **********/
/*
*/
#include "ngspice/ngspice.h" #include "ngspice/ngspice.h"
#include "isrcdefs.h" #include "isrcdefs.h"
@ -13,25 +11,20 @@ Author: 1985 Thomas L. Quarles
void void
ISRCdestroy(GENmodel **inModel) ISRCdestroy(GENmodel **inModel)
{ {
ISRCmodel **model = (ISRCmodel**)inModel;
ISRCinstance *here;
ISRCinstance *prev = NULL;
ISRCmodel *mod = *model;
ISRCmodel *oldmod = NULL;
ISRCmodel *mod = *(ISRCmodel**) inModel;
for( ; mod ; mod = mod->ISRCnextModel) {
if(oldmod) FREE(oldmod);
oldmod = mod;
prev = NULL;
for(here = mod->ISRCinstances ; here ; here = here->ISRCnextInstance) {
if(prev) {
tfree(prev->ISRCcoeffs);
FREE(prev);
}
prev = here;
while (mod) {
ISRCmodel *next_mod = mod->ISRCnextModel;
ISRCinstance *inst = mod->ISRCinstances;
while (inst) {
ISRCinstance *next_inst = inst->ISRCnextInstance;
FREE(inst->ISRCcoeffs);
FREE(inst);
inst = next_inst;
} }
if(prev) FREE(prev);
FREE(mod);
mod = next_mod;
} }
if(oldmod) FREE(oldmod);
*model = NULL;
*inModel = NULL;
} }

29
src/spicelib/devices/jfet/jfetdest.c

@ -2,8 +2,6 @@
Copyright 1990 Regents of the University of California. All rights reserved. Copyright 1990 Regents of the University of California. All rights reserved.
Author: 1985 Thomas L. Quarles Author: 1985 Thomas L. Quarles
**********/ **********/
/*
*/
#include "ngspice/ngspice.h" #include "ngspice/ngspice.h"
#include "jfetdefs.h" #include "jfetdefs.h"
@ -13,22 +11,19 @@ Author: 1985 Thomas L. Quarles
void void
JFETdestroy(GENmodel **inModel) JFETdestroy(GENmodel **inModel)
{ {
JFETmodel **model = (JFETmodel**)inModel;
JFETinstance *here;
JFETinstance *prev = NULL;
JFETmodel *mod = *model;
JFETmodel *oldmod = NULL;
JFETmodel *mod = *(JFETmodel**) inModel;
for( ; mod ; mod = mod->JFETnextModel) {
if(oldmod) FREE(oldmod);
oldmod = mod;
prev = NULL;
for(here = mod->JFETinstances ; here ; here = here->JFETnextInstance) {
if(prev) FREE(prev);
prev = here;
while (mod) {
JFETmodel *next_mod = mod->JFETnextModel;
JFETinstance *inst = mod->JFETinstances;
while (inst) {
JFETinstance *next_inst = inst->JFETnextInstance;
FREE(inst);
inst = next_inst;
} }
if(prev) FREE(prev);
FREE(mod);
mod = next_mod;
} }
if(oldmod) FREE(oldmod);
*model = NULL;
*inModel = NULL;
} }

29
src/spicelib/devices/jfet2/jfet2dest.c

@ -6,8 +6,6 @@ Author: 1985 Thomas L. Quarles
Modified to jfet2 for PS model definition ( Anthony E. Parker ) Modified to jfet2 for PS model definition ( Anthony E. Parker )
Copyright 1994 Macquarie University, Sydney Australia. Copyright 1994 Macquarie University, Sydney Australia.
**********/ **********/
/*
*/
#include "ngspice/ngspice.h" #include "ngspice/ngspice.h"
#include "jfet2defs.h" #include "jfet2defs.h"
@ -17,22 +15,19 @@ Modified to jfet2 for PS model definition ( Anthony E. Parker )
void void
JFET2destroy(GENmodel **inModel) JFET2destroy(GENmodel **inModel)
{ {
JFET2model **model = (JFET2model**)inModel;
JFET2instance *here;
JFET2instance *prev = NULL;
JFET2model *mod = *model;
JFET2model *oldmod = NULL;
JFET2model *mod = *(JFET2model**) inModel;
for( ; mod ; mod = mod->JFET2nextModel) {
if(oldmod) FREE(oldmod);
oldmod = mod;
prev = NULL;
for(here = mod->JFET2instances ; here ; here = here->JFET2nextInstance) {
if(prev) FREE(prev);
prev = here;
while (mod) {
JFET2model *next_mod = mod->JFET2nextModel;
JFET2instance *inst = mod->JFET2instances;
while (inst) {
JFET2instance *next_inst = inst->JFET2nextInstance;
FREE(inst);
inst = next_inst;
} }
if(prev) FREE(prev);
FREE(mod);
mod = next_mod;
} }
if(oldmod) FREE(oldmod);
*model = NULL;
*inModel = NULL;
} }

34
src/spicelib/devices/ltra/ltradest.c

@ -7,29 +7,23 @@ Author: 1990 Jaijeet S. Roychowdhury
#include "ltradefs.h" #include "ltradefs.h"
#include "ngspice/suffix.h" #include "ngspice/suffix.h"
void void
LTRAdestroy(GENmodel **inModel) LTRAdestroy(GENmodel **inModel)
{ {
LTRAmodel **model = (LTRAmodel **) inModel;
LTRAinstance *here;
LTRAinstance *prev = NULL;
LTRAmodel *mod = *model;
LTRAmodel *oldmod = NULL;
LTRAmodel *mod = *(LTRAmodel **) inModel;
for (; mod; mod = mod->LTRAnextModel) {
if (oldmod)
FREE(oldmod);
oldmod = mod;
prev = NULL;
for (here = mod->LTRAinstances; here; here = here->LTRAnextInstance) {
if (prev)
FREE(prev);
prev = here;
while (mod) {
LTRAmodel *next_mod = mod->LTRAnextModel;
LTRAinstance *inst = mod->LTRAinstances;
while (inst) {
LTRAinstance *next_inst = inst->LTRAnextInstance;
FREE(inst);
inst = next_inst;
}
FREE(mod);
mod = next_mod;
} }
if (prev)
FREE(prev);
}
if (oldmod)
FREE(oldmod);
*model = NULL;
*inModel = NULL;
} }

29
src/spicelib/devices/mes/mesdest.c

@ -2,8 +2,6 @@
Copyright 1990 Regents of the University of California. All rights reserved. Copyright 1990 Regents of the University of California. All rights reserved.
Author: 1985 S. Hwang Author: 1985 S. Hwang
**********/ **********/
/*
*/
#include "ngspice/ngspice.h" #include "ngspice/ngspice.h"
#include "mesdefs.h" #include "mesdefs.h"
@ -13,22 +11,19 @@ Author: 1985 S. Hwang
void void
MESdestroy(GENmodel **inModel) MESdestroy(GENmodel **inModel)
{ {
MESmodel **model = (MESmodel**)inModel;
MESinstance *here;
MESinstance *prev = NULL;
MESmodel *mod = *model;
MESmodel *oldmod = NULL;
MESmodel *mod = *(MESmodel**) inModel;
for( ; mod ; mod = mod->MESnextModel) {
if(oldmod) FREE(oldmod);
oldmod = mod;
prev = NULL;
for(here = mod->MESinstances ; here ; here = here->MESnextInstance) {
if(prev) FREE(prev);
prev = here;
while (mod) {
MESmodel *next_mod = mod->MESnextModel;
MESinstance *inst = mod->MESinstances;
while (inst) {
MESinstance *next_inst = inst->MESnextInstance;
FREE(inst);
inst = next_inst;
} }
if(prev) FREE(prev);
FREE(mod);
mod = next_mod;
} }
if(oldmod) FREE(oldmod);
*model = NULL;
*inModel = NULL;
} }

28
src/spicelib/devices/mesa/mesadest.c

@ -11,23 +11,19 @@ Author: Trond Ytterdal
void void
MESAdestroy(GENmodel **inModel) MESAdestroy(GENmodel **inModel)
{ {
MESAmodel **model = (MESAmodel**)inModel;
MESAinstance *here;
MESAinstance *prev = NULL;
MESAmodel *mod = *model;
MESAmodel *oldmod = NULL;
MESAmodel *mod = *(MESAmodel**) inModel;
for( ; mod ; mod = mod->MESAnextModel) {
if(oldmod) FREE(oldmod);
oldmod = mod;
prev = NULL;
for(here = mod->MESAinstances ; here ; here = here->MESAnextInstance) {
if(prev) FREE(prev);
prev = here;
while (mod) {
MESAmodel *next_mod = mod->MESAnextModel;
MESAinstance *inst = mod->MESAinstances;
while (inst) {
MESAinstance *next_inst = inst->MESAnextInstance;
FREE(inst);
inst = next_inst;
} }
if(prev) FREE(prev);
FREE(mod);
mod = next_mod;
} }
if(oldmod) FREE(oldmod);
*model = NULL;
return;
*inModel = NULL;
} }

33
src/spicelib/devices/mos1/mos1dest.c

@ -2,8 +2,6 @@
Copyright 1990 Regents of the University of California. All rights reserved. Copyright 1990 Regents of the University of California. All rights reserved.
Author: 1985 Thomas L. Quarles Author: 1985 Thomas L. Quarles
**********/ **********/
/*
*/
#include "ngspice/ngspice.h" #include "ngspice/ngspice.h"
#include "mos1defs.h" #include "mos1defs.h"
@ -13,25 +11,20 @@ Author: 1985 Thomas L. Quarles
void void
MOS1destroy(GENmodel **inModel) MOS1destroy(GENmodel **inModel)
{ {
MOS1model **model = (MOS1model**)inModel;
MOS1instance *here;
MOS1instance *prev = NULL;
MOS1model *mod = *model;
MOS1model *oldmod = NULL;
MOS1model *mod = *(MOS1model**) inModel;
for( ; mod ; mod = mod->MOS1nextModel) {
if(oldmod) FREE(oldmod);
oldmod = mod;
prev = NULL;
for(here = mod->MOS1instances ; here ; here = here->MOS1nextInstance) {
if(prev){
if(prev->MOS1sens) FREE(prev->MOS1sens);
FREE(prev);
}
prev = here;
while (mod) {
MOS1model *next_mod = mod->MOS1nextModel;
MOS1instance *inst = mod->MOS1instances;
while (inst) {
MOS1instance *next_inst = inst->MOS1nextInstance;
FREE(inst->MOS1sens);
FREE(inst);
inst = next_inst;
} }
if(prev) FREE(prev);
FREE(mod);
mod = next_mod;
} }
if(oldmod) FREE(oldmod);
*model = NULL;
*inModel = NULL;
} }

33
src/spicelib/devices/mos2/mos2dest.c

@ -2,8 +2,6 @@
Copyright 1990 Regents of the University of California. All rights reserved. Copyright 1990 Regents of the University of California. All rights reserved.
Author: 1985 Thomas L. Quarles Author: 1985 Thomas L. Quarles
**********/ **********/
/*
*/
#include "ngspice/ngspice.h" #include "ngspice/ngspice.h"
#include "mos2defs.h" #include "mos2defs.h"
@ -13,25 +11,20 @@ Author: 1985 Thomas L. Quarles
void void
MOS2destroy(GENmodel **inModel) MOS2destroy(GENmodel **inModel)
{ {
MOS2model **model = (MOS2model **)inModel;
MOS2instance *here;
MOS2instance *prev = NULL;
MOS2model *mod = *model;
MOS2model *oldmod = NULL;
MOS2model *mod = *(MOS2model **) inModel;
for( ; mod ; mod = mod->MOS2nextModel) {
if(oldmod) FREE(oldmod);
oldmod = mod;
prev = NULL;
for(here = mod->MOS2instances ; here ; here = here->MOS2nextInstance) {
if(prev){
if(prev->MOS2sens) FREE(prev->MOS2sens);
FREE(prev);
while (mod) {
MOS2model *next_mod = mod->MOS2nextModel;
MOS2instance *inst = mod->MOS2instances;
while (inst) {
MOS2instance *next_inst = inst->MOS2nextInstance;
FREE(inst->MOS2sens);
FREE(inst);
inst = next_inst;
} }
prev = here;
}
if(prev) FREE(prev);
FREE(mod);
mod = next_mod;
} }
if(oldmod) FREE(oldmod);
*model = NULL;
*inModel = NULL;
} }

33
src/spicelib/devices/mos3/mos3dest.c

@ -2,8 +2,6 @@
Copyright 1990 Regents of the University of California. All rights reserved. Copyright 1990 Regents of the University of California. All rights reserved.
Author: 1985 Thomas L. Quarles Author: 1985 Thomas L. Quarles
**********/ **********/
/*
*/
#include "ngspice/ngspice.h" #include "ngspice/ngspice.h"
#include "mos3defs.h" #include "mos3defs.h"
@ -13,25 +11,20 @@ Author: 1985 Thomas L. Quarles
void void
MOS3destroy(GENmodel **inModel) MOS3destroy(GENmodel **inModel)
{ {
MOS3model **model = (MOS3model **)inModel;
MOS3instance *here;
MOS3instance *prev = NULL;
MOS3model *mod = *model;
MOS3model *oldmod = NULL;
MOS3model *mod = *(MOS3model **) inModel;
for( ; mod ; mod = mod->MOS3nextModel) {
if(oldmod) FREE(oldmod);
oldmod = mod;
prev = NULL;
for(here = mod->MOS3instances ; here ; here = here->MOS3nextInstance) {
if(prev){
if(prev->MOS3sens) FREE(prev->MOS3sens);
FREE(prev);
}
prev = here;
while (mod) {
MOS3model *next_mod = mod->MOS3nextModel;
MOS3instance *inst = mod->MOS3instances;
while (inst) {
MOS3instance *next_inst = inst->MOS3nextInstance;
FREE(inst->MOS3sens);
FREE(inst);
inst = next_inst;
} }
if(prev) FREE(prev);
FREE(mod);
mod = next_mod;
} }
if(oldmod) FREE(oldmod);
*model = NULL;
*inModel = NULL;
} }

33
src/spicelib/devices/mos6/mos6dest.c

@ -2,8 +2,6 @@
Copyright 1990 Regents of the University of California. All rights reserved. Copyright 1990 Regents of the University of California. All rights reserved.
Author: 1989 Takayasu Sakurai Author: 1989 Takayasu Sakurai
**********/ **********/
/*
*/
#include "ngspice/ngspice.h" #include "ngspice/ngspice.h"
#include "mos6defs.h" #include "mos6defs.h"
@ -13,25 +11,20 @@ Author: 1989 Takayasu Sakurai
void void
MOS6destroy(GENmodel **inModel) MOS6destroy(GENmodel **inModel)
{ {
MOS6model **model = (MOS6model**)inModel;
MOS6instance *here;
MOS6instance *prev = NULL;
MOS6model *mod = *model;
MOS6model *oldmod = NULL;
MOS6model *mod = *(MOS6model**) inModel;
for( ; mod ; mod = mod->MOS6nextModel) {
if(oldmod) FREE(oldmod);
oldmod = mod;
prev = NULL;
for(here = mod->MOS6instances ; here ; here = here->MOS6nextInstance) {
if(prev){
if(prev->MOS6sens) FREE(prev->MOS6sens);
FREE(prev);
}
prev = here;
while (mod) {
MOS6model *next_mod = mod->MOS6nextModel;
MOS6instance *inst = mod->MOS6instances;
while (inst) {
MOS6instance *next_inst = inst->MOS6nextInstance;
FREE(inst->MOS6sens);
FREE(inst);
inst = next_inst;
} }
if(prev) FREE(prev);
FREE(mod);
mod = next_mod;
} }
if(oldmod) FREE(oldmod);
*model = NULL;
*inModel = NULL;
} }

33
src/spicelib/devices/mos9/mos9dest.c

@ -3,8 +3,6 @@ Copyright 1990 Regents of the University of California. All rights reserved.
Author: 1985 Thomas L. Quarles Author: 1985 Thomas L. Quarles
Modified: Alan Gillespie Modified: Alan Gillespie
**********/ **********/
/*
*/
#include "ngspice/ngspice.h" #include "ngspice/ngspice.h"
#include "mos9defs.h" #include "mos9defs.h"
@ -14,25 +12,20 @@ Modified: Alan Gillespie
void void
MOS9destroy(GENmodel **inModel) MOS9destroy(GENmodel **inModel)
{ {
MOS9model **model = (MOS9model **)inModel;
MOS9instance *here;
MOS9instance *prev = NULL;
MOS9model *mod = *model;
MOS9model *oldmod = NULL;
MOS9model *mod = *(MOS9model **) inModel;
for( ; mod ; mod = mod->MOS9nextModel) {
if(oldmod) FREE(oldmod);
oldmod = mod;
prev = NULL;
for(here = mod->MOS9instances ; here ; here = here->MOS9nextInstance) {
if(prev){
if(prev->MOS9sens) FREE(prev->MOS9sens);
FREE(prev);
}
prev = here;
while (mod) {
MOS9model *next_mod = mod->MOS9nextModel;
MOS9instance *inst = mod->MOS9instances;
while (inst) {
MOS9instance *next_inst = inst->MOS9nextInstance;
FREE(inst->MOS9sens);
FREE(inst);
inst = next_inst;
} }
if(prev) FREE(prev);
FREE(mod);
mod = next_mod;
} }
if(oldmod) FREE(oldmod);
*model = NULL;
*inModel = NULL;
} }

33
src/spicelib/devices/nbjt/nbjtdest.c

@ -1,6 +1,6 @@
/********** /**********
Copyright 1992 Regents of the University of California. All rights reserved. Copyright 1992 Regents of the University of California. All rights reserved.
Author: 1987 Kartikeya Mayaram, U. C. Berkeley CAD Group
Author: 1987 Kartikeya Mayaram, U. C. Berkeley CAD Group
**********/ **********/
/* /*
@ -14,25 +14,24 @@ Author: 1987 Kartikeya Mayaram, U. C. Berkeley CAD Group
#include "ngspice/cidersupt.h" #include "ngspice/cidersupt.h"
#include "ngspice/suffix.h" #include "ngspice/suffix.h"
void void
NBJTdestroy(GENmodel **inModel) NBJTdestroy(GENmodel **inModel)
{ {
NBJTmodel *mod = *(NBJTmodel **) inModel;
NBJTmodel **model = (NBJTmodel **) inModel;
NBJTmodel *mod, *nextMod;
NBJTinstance *inst, *nextInst;
for (mod = *model; mod;) {
for (inst = mod->NBJTinstances; inst;) {
ONEdestroy(inst->NBJTpDevice);
nextInst = inst->NBJTnextInstance;
FREE(inst);
inst = nextInst;
while (mod) {
NBJTmodel *next_mod = mod->NBJTnextModel;
NBJTinstance *inst = mod->NBJTinstances;
while (inst) {
NBJTinstance *next_inst = inst->NBJTnextInstance;
ONEdestroy(inst->NBJTpDevice);
FREE(inst);
inst = next_inst;
}
FREE(mod);
mod = next_mod;
} }
nextMod = mod->NBJTnextModel;
FREE(mod);
mod = nextMod;
}
*model = NULL;
*inModel = NULL;
} }

33
src/spicelib/devices/nbjt2/nbt2dest.c

@ -1,6 +1,6 @@
/********** /**********
Copyright 1992 Regents of the University of California. All rights reserved. Copyright 1992 Regents of the University of California. All rights reserved.
Author: 1987 Kartikeya Mayaram, U. C. Berkeley CAD Group
Author: 1987 Kartikeya Mayaram, U. C. Berkeley CAD Group
**********/ **********/
/* /*
@ -14,25 +14,24 @@ Author: 1987 Kartikeya Mayaram, U. C. Berkeley CAD Group
#include "../../../ciderlib/twod/twodext.h" #include "../../../ciderlib/twod/twodext.h"
#include "ngspice/suffix.h" #include "ngspice/suffix.h"
void void
NBJT2destroy(GENmodel **inModel) NBJT2destroy(GENmodel **inModel)
{ {
NBJT2model *mod = *(NBJT2model **) inModel;
NBJT2model **model = (NBJT2model **) inModel;
NBJT2model *mod, *nextMod;
NBJT2instance *inst, *nextInst;
for (mod = *model; mod;) {
for (inst = mod->NBJT2instances; inst;) {
TWOdestroy(inst->NBJT2pDevice);
nextInst = inst->NBJT2nextInstance;
FREE(inst);
inst = nextInst;
while (mod) {
NBJT2model *next_mod = mod->NBJT2nextModel;
NBJT2instance *inst = mod->NBJT2instances;
while (inst) {
NBJT2instance *next_inst = inst->NBJT2nextInstance;
TWOdestroy(inst->NBJT2pDevice);
FREE(inst);
inst = next_inst;
}
FREE(mod);
mod = next_mod;
} }
nextMod = mod->NBJT2nextModel;
FREE(mod);
mod = nextMod;
}
*model = NULL;
*inModel = NULL;
} }

38
src/spicelib/devices/ndev/ndevdest.c

@ -1,36 +1,32 @@
/********** /**********
Permit to use it as your wish. Permit to use it as your wish.
Author: 2007 Gong Ding, gdiso@ustc.edu
University of Science and Technology of China
Author: 2007 Gong Ding, gdiso@ustc.edu
University of Science and Technology of China
**********/ **********/
#include "ngspice/ngspice.h" #include "ngspice/ngspice.h"
#include "ndevdefs.h" #include "ndevdefs.h"
#include "ngspice/suffix.h" #include "ngspice/suffix.h"
void void
NDEVdestroy(GENmodel **inModel) NDEVdestroy(GENmodel **inModel)
{ {
NDEVmodel **model = (NDEVmodel **)inModel;
NDEVinstance *here;
NDEVinstance *prev = NULL;
NDEVmodel *mod = *model;
NDEVmodel *oldmod = NULL;
NDEVmodel *mod = *(NDEVmodel **) inModel;
for( ; mod ; mod = mod->NDEVnextModel) {
if(oldmod) FREE(oldmod);
oldmod = mod;
prev = NULL;
for(here = mod->NDEVinstances ; here ; here = here->NDEVnextInstance) {
if(prev) FREE(prev);
prev = here;
while (mod) {
NDEVmodel *next_mod = mod->NDEVnextModel;
NDEVinstance *inst = mod->NDEVinstances;
while (inst) {
NDEVinstance *next_inst = inst->NDEVnextInstance;
FREE(inst);
inst = next_inst;
} }
if(prev) FREE(prev);
close(mod->sock);
fprintf(stdout,"Disconnect to remote NDEV server %s:%d\n",mod->host,mod->port);
close(mod->sock);
printf("Disconnect to remote NDEV server %s:%d\n", mod->host, mod->port);
FREE(mod);
mod = next_mod;
} }
if(oldmod) FREE(oldmod);
*model = NULL;
*inModel = NULL;
} }

33
src/spicelib/devices/numd/numddest.c

@ -1,6 +1,6 @@
/********** /**********
Copyright 1992 Regents of the University of California. All rights reserved. Copyright 1992 Regents of the University of California. All rights reserved.
Author: 1987 Kartikeya Mayaram, U. C. Berkeley CAD Group
Author: 1987 Kartikeya Mayaram, U. C. Berkeley CAD Group
**********/ **********/
/* /*
@ -14,25 +14,24 @@ Author: 1987 Kartikeya Mayaram, U. C. Berkeley CAD Group
#include "ngspice/cidersupt.h" #include "ngspice/cidersupt.h"
#include "ngspice/suffix.h" #include "ngspice/suffix.h"
void void
NUMDdestroy(GENmodel **inModel) NUMDdestroy(GENmodel **inModel)
{ {
NUMDmodel *mod = *(NUMDmodel **) inModel;
NUMDmodel **model = (NUMDmodel **) inModel;
NUMDmodel *mod, *nextMod;
NUMDinstance *inst, *nextInst;
for (mod = *model; mod;) {
for (inst = mod->NUMDinstances; inst;) {
ONEdestroy(inst->NUMDpDevice);
nextInst = inst->NUMDnextInstance;
FREE(inst);
inst = nextInst;
while (mod) {
NUMDmodel *next_mod = mod->NUMDnextModel;
NUMDinstance *inst = mod->NUMDinstances;
while (inst) {
NUMDinstance *next_inst = inst->NUMDnextInstance;
ONEdestroy(inst->NUMDpDevice);
FREE(inst);
inst = next_inst;
}
FREE(mod);
mod = next_mod;
} }
nextMod = mod->NUMDnextModel;
FREE(mod);
mod = nextMod;
}
*model = NULL;
*inModel = NULL;
} }

33
src/spicelib/devices/numd2/nud2dest.c

@ -1,6 +1,6 @@
/********** /**********
Copyright 1992 Regents of the University of California. All rights reserved. Copyright 1992 Regents of the University of California. All rights reserved.
Author: 1987 Kartikeya Mayaram, U. C. Berkeley CAD Group
Author: 1987 Kartikeya Mayaram, U. C. Berkeley CAD Group
**********/ **********/
/* /*
@ -15,25 +15,24 @@ Author: 1987 Kartikeya Mayaram, U. C. Berkeley CAD Group
#include "ngspice/cidersupt.h" #include "ngspice/cidersupt.h"
#include "ngspice/suffix.h" #include "ngspice/suffix.h"
void void
NUMD2destroy(GENmodel **inModel) NUMD2destroy(GENmodel **inModel)
{ {
NUMD2model *mod = *(NUMD2model **) inModel;
NUMD2model **model = (NUMD2model **) inModel;
NUMD2model *mod, *nextMod;
NUMD2instance *inst, *nextInst;
for (mod = *model; mod;) {
for (inst = mod->NUMD2instances; inst;) {
TWOdestroy(inst->NUMD2pDevice);
nextInst = inst->NUMD2nextInstance;
FREE(inst);
inst = nextInst;
while (mod) {
NUMD2model *next_mod = mod->NUMD2nextModel;
NUMD2instance *inst = mod->NUMD2instances;
while (inst) {
NUMD2instance *next_inst = inst->NUMD2nextInstance;
TWOdestroy(inst->NUMD2pDevice);
FREE(inst);
inst = next_inst;
}
FREE(mod);
mod = next_mod;
} }
nextMod = mod->NUMD2nextModel;
FREE(mod);
mod = nextMod;
}
*model = NULL;
*inModel = NULL;
} }

32
src/spicelib/devices/numos/nummdest.c

@ -1,6 +1,6 @@
/********** /**********
Copyright 1991 Regents of the University of California. All rights reserved. Copyright 1991 Regents of the University of California. All rights reserved.
Author: 1987 Kartikeya Mayaram, U. C. Berkeley CAD Group
Author: 1987 Kartikeya Mayaram, U. C. Berkeley CAD Group
**********/ **********/
/* /*
@ -14,24 +14,24 @@ Author: 1987 Kartikeya Mayaram, U. C. Berkeley CAD Group
#include "../../../ciderlib/twod/twodext.h" #include "../../../ciderlib/twod/twodext.h"
#include "ngspice/suffix.h" #include "ngspice/suffix.h"
void void
NUMOSdestroy(GENmodel **inModel) NUMOSdestroy(GENmodel **inModel)
{ {
NUMOSmodel *mod = *(NUMOSmodel **) inModel;
NUMOSmodel **model = (NUMOSmodel **) inModel;
NUMOSmodel *mod, *nextMod;
NUMOSinstance *inst, *nextInst;
for (mod = *model; mod;) {
for (inst = mod->NUMOSinstances; inst;) {
TWOdestroy(inst->NUMOSpDevice);
nextInst = inst->NUMOSnextInstance;
FREE(inst);
inst = nextInst;
while (mod) {
NUMOSmodel *next_mod = mod->NUMOSnextModel;
NUMOSinstance *inst = mod->NUMOSinstances;
while (inst) {
NUMOSinstance *next_inst = inst->NUMOSnextInstance;
TWOdestroy(inst->NUMOSpDevice);
FREE(inst);
inst = next_inst;
}
FREE(mod);
mod = next_mod;
} }
nextMod = mod->NUMOSnextModel;
FREE(mod);
mod = nextMod;
}
*model = NULL;
*inModel = NULL;
} }

29
src/spicelib/devices/res/resdest.c

@ -3,8 +3,6 @@ Copyright 1990 Regents of the University of California. All rights reserved.
Author: 1985 Thomas L. Quarles Author: 1985 Thomas L. Quarles
Modified: Apr 2000 - Paolo Nenzi Modified: Apr 2000 - Paolo Nenzi
**********/ **********/
/*
*/
#include "ngspice/ngspice.h" #include "ngspice/ngspice.h"
#include "resdefs.h" #include "resdefs.h"
@ -13,22 +11,19 @@ Modified: Apr 2000 - Paolo Nenzi
void void
RESdestroy(GENmodel **inModel) RESdestroy(GENmodel **inModel)
{ {
RESmodel **model = (RESmodel **)inModel;
RESinstance *here;
RESinstance *prev = NULL;
RESmodel *mod = *model;
RESmodel *oldmod = NULL;
RESmodel *mod = *(RESmodel **) inModel;
for( ; mod ; mod = mod->RESnextModel) {
if(oldmod) FREE(oldmod);
oldmod = mod;
prev = NULL;
for(here = mod->RESinstances ; here ; here = here->RESnextInstance) {
if(prev) FREE(prev);
prev = here;
while (mod) {
RESmodel *next_mod = mod->RESnextModel;
RESinstance *inst = mod->RESinstances;
while (inst) {
RESinstance *next_inst = inst->RESnextInstance;
FREE(inst);
inst = next_inst;
} }
if(prev) FREE(prev);
FREE(mod);
mod = next_mod;
} }
if(oldmod) FREE(oldmod);
*model = NULL;
*inModel = NULL;
} }

33
src/spicelib/devices/soi3/soi3dest.c

@ -15,7 +15,7 @@ With help from : Bernard Tenbroek, Bill Redman-White, Mike Uren, Chris Edwards
Acknowledgements : Rupert Howes and Pete Mole. Acknowledgements : Rupert Howes and Pete Mole.
**********/ **********/
/**********
/**********
Modified by Paolo Nenzi 2002 Modified by Paolo Nenzi 2002
ngspice integration ngspice integration
**********/ **********/
@ -28,25 +28,20 @@ ngspice integration
void void
SOI3destroy(GENmodel **inModel) SOI3destroy(GENmodel **inModel)
{ {
SOI3model **model = (SOI3model**)inModel;
SOI3instance *here;
SOI3instance *prev = NULL;
SOI3model *mod = *model;
SOI3model *oldmod = NULL;
SOI3model *mod = *(SOI3model**) inModel;
for( ; mod ; mod = mod->SOI3nextModel) {
if(oldmod) FREE(oldmod);
oldmod = mod;
prev = NULL;
for(here = mod->SOI3instances ; here ; here = here->SOI3nextInstance) {
if(prev){
/* if(prev->SOI3sens) FREE(prev->SOI3sens); */
FREE(prev);
}
prev = here;
while (mod) {
SOI3model *next_mod = mod->SOI3nextModel;
SOI3instance *inst = mod->SOI3instances;
while (inst) {
SOI3instance *next_inst = inst->SOI3nextInstance;
/* FREE(inst->SOI3sens); */
FREE(inst);
inst = next_inst;
} }
if(prev) FREE(prev);
FREE(mod);
mod = next_mod;
} }
if(oldmod) FREE(oldmod);
*model = NULL;
*inModel = NULL;
} }

29
src/spicelib/devices/sw/swdest.c

@ -2,8 +2,6 @@
Copyright 1990 Regents of the University of California. All rights reserved. Copyright 1990 Regents of the University of California. All rights reserved.
Author: 1985 Gordon Jacobs Author: 1985 Gordon Jacobs
**********/ **********/
/*
*/
#include "ngspice/ngspice.h" #include "ngspice/ngspice.h"
#include "swdefs.h" #include "swdefs.h"
@ -13,22 +11,19 @@ Author: 1985 Gordon Jacobs
void void
SWdestroy(GENmodel **inModel) SWdestroy(GENmodel **inModel)
{ {
SWmodel **model = (SWmodel**)inModel;
SWinstance *here;
SWinstance *prev = NULL;
SWmodel *mod = *model;
SWmodel *oldmod = NULL;
SWmodel *mod = *(SWmodel**) inModel;
for( ; mod ; mod = mod->SWnextModel) {
if(oldmod) FREE(oldmod);
oldmod = mod;
prev = NULL;
for(here = mod->SWinstances ; here ; here = here->SWnextInstance) {
if(prev) FREE(prev);
prev = here;
while (mod) {
SWmodel *next_mod = mod->SWnextModel;
SWinstance *inst = mod->SWinstances;
while (inst) {
SWinstance *next_inst = inst->SWnextInstance;
FREE(inst);
inst = next_inst;
} }
if(prev) FREE(prev);
FREE(mod);
mod = next_mod;
} }
if(oldmod) FREE(oldmod);
*model = NULL;
*inModel = NULL;
} }

29
src/spicelib/devices/tra/tradest.c

@ -2,8 +2,6 @@
Copyright 1990 Regents of the University of California. All rights reserved. Copyright 1990 Regents of the University of California. All rights reserved.
Author: 1985 Thomas L. Quarles Author: 1985 Thomas L. Quarles
**********/ **********/
/*
*/
#include "ngspice/ngspice.h" #include "ngspice/ngspice.h"
#include "tradefs.h" #include "tradefs.h"
@ -13,22 +11,19 @@ Author: 1985 Thomas L. Quarles
void void
TRAdestroy(GENmodel **inModel) TRAdestroy(GENmodel **inModel)
{ {
TRAmodel **model = (TRAmodel **)inModel;
TRAinstance *here;
TRAinstance *prev = NULL;
TRAmodel *mod = *model;
TRAmodel *oldmod = NULL;
TRAmodel *mod = *(TRAmodel **) inModel;
for( ; mod ; mod = mod->TRAnextModel) {
if(oldmod) FREE(oldmod);
oldmod = mod;
prev = NULL;
for(here = mod->TRAinstances ; here ; here = here->TRAnextInstance) {
if(prev) FREE(prev);
prev = here;
while (mod) {
TRAmodel *next_mod = mod->TRAnextModel;
TRAinstance *inst = mod->TRAinstances;
while (inst) {
TRAinstance *next_inst = inst->TRAnextInstance;
FREE(inst);
inst = next_inst;
} }
if(prev) FREE(prev);
FREE(mod);
mod = next_mod;
} }
if(oldmod) FREE(oldmod);
*model = NULL;
*inModel = NULL;
} }

28
src/spicelib/devices/txl/txldest.c

@ -4,7 +4,6 @@ reserved.
Author: 1992 Charles Hough Author: 1992 Charles Hough
**********/ **********/
#include "ngspice/ngspice.h" #include "ngspice/ngspice.h"
#include "txldefs.h" #include "txldefs.h"
#include "ngspice/suffix.h" #include "ngspice/suffix.h"
@ -13,22 +12,19 @@ Author: 1992 Charles Hough
void void
TXLdestroy(GENmodel **inModel) TXLdestroy(GENmodel **inModel)
{ {
TXLmodel **model = (TXLmodel **)inModel;
TXLinstance *here;
TXLinstance *prev = NULL;
TXLmodel *mod = *model;
TXLmodel *oldmod = NULL;
TXLmodel *mod = *(TXLmodel **) inModel;
for( ; mod ; mod = mod->TXLnextModel) {
if(oldmod) FREE(oldmod);
oldmod = mod;
prev = NULL;
for(here = mod->TXLinstances ; here ; here = here->TXLnextInstance) {
if(prev) FREE(prev);
prev = here;
while (mod) {
TXLmodel *next_mod = mod->TXLnextModel;
TXLinstance *inst = mod->TXLinstances;
while (inst) {
TXLinstance *next_inst = inst->TXLnextInstance;
FREE(inst);
inst = next_inst;
} }
if(prev) FREE(prev);
FREE(mod);
mod = next_mod;
} }
if(oldmod) FREE(oldmod);
*model = NULL;
*inModel = NULL;
} }

30
src/spicelib/devices/urc/urcdest.c

@ -2,9 +2,6 @@
Copyright 1990 Regents of the University of California. All rights reserved. Copyright 1990 Regents of the University of California. All rights reserved.
Author: 1987 Thomas L. Quarles Author: 1987 Thomas L. Quarles
**********/ **********/
/*
*/
#include "ngspice/ngspice.h" #include "ngspice/ngspice.h"
#include "urcdefs.h" #include "urcdefs.h"
@ -14,22 +11,19 @@ Author: 1987 Thomas L. Quarles
void void
URCdestroy(GENmodel **inModel) URCdestroy(GENmodel **inModel)
{ {
URCmodel **model = (URCmodel **)inModel;
URCinstance *here;
URCinstance *prev = NULL;
URCmodel *mod = *model;
URCmodel *oldmod = NULL;
URCmodel *mod = *(URCmodel **) inModel;
for( ; mod ; mod = mod->URCnextModel) {
if(oldmod) FREE(oldmod);
oldmod = mod;
prev = NULL;
for(here = mod->URCinstances ; here ; here = here->URCnextInstance) {
if(prev) FREE(prev);
prev = here;
while (mod) {
URCmodel *next_mod = mod->URCnextModel;
URCinstance *inst = mod->URCinstances;
while (inst) {
URCinstance *next_inst = inst->URCnextInstance;
FREE(inst);
inst = next_inst;
} }
if(prev) FREE(prev);
FREE(mod);
mod = next_mod;
} }
if(oldmod) FREE(oldmod);
*model = NULL;
*inModel = NULL;
} }

35
src/spicelib/devices/vbic/vbicdest.c

@ -18,29 +18,20 @@ Spice3 Implementation: 2003 Dietmar Warning DAnalyse GmbH
void void
VBICdestroy(GENmodel **inModel) VBICdestroy(GENmodel **inModel)
{ {
VBICmodel *mod = *(VBICmodel**) inModel;
VBICmodel **model = (VBICmodel**)inModel;
VBICinstance *here;
VBICinstance *prev = NULL;
VBICmodel *mod = *model;
VBICmodel *oldmod = NULL;
for( ; mod ; mod = mod->VBICnextModel) {
if(oldmod) FREE(oldmod);
oldmod = mod;
prev = NULL;
for(here = mod->VBICinstances ; here ; here = here->VBICnextInstance) {
if(prev){
if(prev->VBICsens) FREE(prev->VBICsens);
FREE(prev);
}
prev = here;
}
if(prev){
if(prev->VBICsens) FREE(prev->VBICsens);
FREE(prev);
while (mod) {
VBICmodel *next_mod = mod->VBICnextModel;
VBICinstance *inst = mod->VBICinstances;
while (inst) {
VBICinstance *next_inst = inst->VBICnextInstance;
FREE(inst->VBICsens);
FREE(inst);
inst = next_inst;
} }
FREE(mod);
mod = next_mod;
} }
if(oldmod) FREE(oldmod);
*model = NULL;
*inModel = NULL;
} }

29
src/spicelib/devices/vccs/vccsdest.c

@ -2,8 +2,6 @@
Copyright 1990 Regents of the University of California. All rights reserved. Copyright 1990 Regents of the University of California. All rights reserved.
Author: 1985 Thomas L. Quarles Author: 1985 Thomas L. Quarles
**********/ **********/
/*
*/
#include "ngspice/ngspice.h" #include "ngspice/ngspice.h"
#include "vccsdefs.h" #include "vccsdefs.h"
@ -13,22 +11,19 @@ Author: 1985 Thomas L. Quarles
void void
VCCSdestroy(GENmodel **inModel) VCCSdestroy(GENmodel **inModel)
{ {
VCCSmodel **model = (VCCSmodel**)inModel;
VCCSinstance *here;
VCCSinstance *prev = NULL;
VCCSmodel *mod = *model;
VCCSmodel *oldmod = NULL;
VCCSmodel *mod = *(VCCSmodel**) inModel;
for( ; mod ; mod = mod->VCCSnextModel) {
if(oldmod) FREE(oldmod);
oldmod = mod;
prev = NULL;
for(here = mod->VCCSinstances ; here ; here = here->VCCSnextInstance) {
if(prev) FREE(prev);
prev = here;
while (mod) {
VCCSmodel *next_mod = mod->VCCSnextModel;
VCCSinstance *inst = mod->VCCSinstances;
while (inst) {
VCCSinstance *next_inst = inst->VCCSnextInstance;
FREE(inst);
inst = next_inst;
} }
if(prev) FREE(prev);
FREE(mod);
mod = next_mod;
} }
if(oldmod) FREE(oldmod);
*model = NULL;
*inModel = NULL;
} }

29
src/spicelib/devices/vcvs/vcvsdest.c

@ -2,8 +2,6 @@
Copyright 1990 Regents of the University of California. All rights reserved. Copyright 1990 Regents of the University of California. All rights reserved.
Author: 1985 Thomas L. Quarles Author: 1985 Thomas L. Quarles
**********/ **********/
/*
*/
#include "ngspice/ngspice.h" #include "ngspice/ngspice.h"
#include "vcvsdefs.h" #include "vcvsdefs.h"
@ -13,22 +11,19 @@ Author: 1985 Thomas L. Quarles
void void
VCVSdestroy(GENmodel **inModel) VCVSdestroy(GENmodel **inModel)
{ {
VCVSmodel **model = (VCVSmodel **)inModel;
VCVSinstance *here;
VCVSinstance *prev = NULL;
VCVSmodel *mod = *model;
VCVSmodel *oldmod = NULL;
VCVSmodel *mod = *(VCVSmodel **) inModel;
for( ; mod ; mod = mod->VCVSnextModel) {
if(oldmod) FREE(oldmod);
oldmod = mod;
prev = NULL;
for(here = mod->VCVSinstances ; here ; here = here->VCVSnextInstance) {
if(prev) FREE(prev);
prev = here;
while (mod) {
VCVSmodel *next_mod = mod->VCVSnextModel;
VCVSinstance *inst = mod->VCVSinstances;
while (inst) {
VCVSinstance *next_inst = inst->VCVSnextInstance;
FREE(inst);
inst = next_inst;
} }
if(prev) FREE(prev);
FREE(mod);
mod = next_mod;
} }
if(oldmod) FREE(oldmod);
*model = NULL;
*inModel = NULL;
} }

33
src/spicelib/devices/vsrc/vsrcdest.c

@ -2,8 +2,6 @@
Copyright 1990 Regents of the University of California. All rights reserved. Copyright 1990 Regents of the University of California. All rights reserved.
Author: 1985 Thomas L. Quarles Author: 1985 Thomas L. Quarles
**********/ **********/
/*
*/
#include "ngspice/ngspice.h" #include "ngspice/ngspice.h"
#include "vsrcdefs.h" #include "vsrcdefs.h"
@ -13,25 +11,20 @@ Author: 1985 Thomas L. Quarles
void void
VSRCdestroy(GENmodel **inModel) VSRCdestroy(GENmodel **inModel)
{ {
VSRCmodel **model = (VSRCmodel**)inModel;
VSRCinstance *here;
VSRCinstance *prev = NULL;
VSRCmodel *mod = *model;
VSRCmodel *oldmod = NULL;
VSRCmodel *mod = *(VSRCmodel**) inModel;
for( ; mod ; mod = mod->VSRCnextModel) {
if(oldmod) FREE(oldmod);
oldmod = mod;
prev = NULL;
for(here = mod->VSRCinstances ; here ; here = here->VSRCnextInstance) {
if(prev) {
tfree(prev->VSRCcoeffs);
FREE(prev);
}
prev = here;
while (mod) {
VSRCmodel *next_mod = mod->VSRCnextModel;
VSRCinstance *inst = mod->VSRCinstances;
while (inst) {
VSRCinstance *next_inst = inst->VSRCnextInstance;
FREE(inst->VSRCcoeffs);
FREE(inst);
inst = next_inst;
} }
if(prev) FREE(prev);
FREE(mod);
mod = next_mod;
} }
if(oldmod) FREE(oldmod);
*model = NULL;
*inModel = NULL;
} }
Loading…
Cancel
Save