From 239780ebeff03b0e7580a23b97e94be115ff1cd5 Mon Sep 17 00:00:00 2001 From: rlar Date: Sat, 7 Jan 2017 12:05:20 +0100 Subject: [PATCH] cleanup, use an array for struct GENinstance.GENnode --- src/include/ngspice/gendefs.h | 18 +++++++++++------- src/spicelib/analysis/ckti2nod.c | 26 ++------------------------ src/spicelib/devices/cktbindnode.c | 27 ++------------------------- 3 files changed, 15 insertions(+), 56 deletions(-) diff --git a/src/include/ngspice/gendefs.h b/src/include/ngspice/gendefs.h index 8bc1546cc..dae4e1fe6 100644 --- a/src/include/ngspice/gendefs.h +++ b/src/include/ngspice/gendefs.h @@ -21,15 +21,19 @@ struct GENinstance { * current model*/ IFuid GENname; /* pointer to character string naming this instance */ int GENstate; /* state index number */ - int GENnode1; /* appropriate node numbers */ - int GENnode2; /* appropriate node numbers */ - int GENnode3; /* appropriate node numbers */ - int GENnode4; /* appropriate node numbers */ - int GENnode5; /* appropriate node numbers */ - int GENnode6; /* added to create body node 01/06/99 */ - int GENnode7; /* added to create temp node 2/03/99 */ + int GENnode[7]; /* node numbers to which this instance is connected to */ + /* carefull, thats overlayed into the actual device structs */ }; +/* argh, terminals are counted from 1 */ +#define GENnode1 GENnode[0] +#define GENnode2 GENnode[1] +#define GENnode3 GENnode[2] +#define GENnode4 GENnode[3] +#define GENnode5 GENnode[4] +#define GENnode6 GENnode[5] +#define GENnode7 GENnode[6] + /* per model data */ diff --git a/src/spicelib/analysis/ckti2nod.c b/src/spicelib/analysis/ckti2nod.c index 0625feffc..4c3e0971f 100644 --- a/src/spicelib/analysis/ckti2nod.c +++ b/src/spicelib/analysis/ckti2nod.c @@ -29,30 +29,8 @@ CKTinst2Node(CKTcircuit *ckt, void *instPtr, int terminal, CKTnode **node, IFuid type = ((GENinstance *)instPtr)->GENmodPtr->GENmodType; if(*(DEVices[type]->DEVpublic.terms) >= terminal && terminal > 0) { - switch(terminal) { - default: return(E_NOTERM); - case 1: - nodenum = ((GENinstance *)instPtr)->GENnode1; - break; - case 2: - nodenum = ((GENinstance *)instPtr)->GENnode2; - break; - case 3: - nodenum = ((GENinstance *)instPtr)->GENnode3; - break; - case 4: - nodenum = ((GENinstance *)instPtr)->GENnode4; - break; - case 5: - nodenum = ((GENinstance *)instPtr)->GENnode5; - break; - case 6: - nodenum = ((GENinstance *)instPtr)->GENnode6; - break; - case 7: - nodenum = ((GENinstance *)instPtr)->GENnode7; - break; - } + /* argh, terminals are counted from 1 */ + nodenum = ((GENinstance *)instPtr)->GENnode[terminal - 1]; /* ok, now we know its number, so we just have to find it.*/ for(here = ckt->CKTnodes;here;here = here->next) { if(here->number == nodenum) { diff --git a/src/spicelib/devices/cktbindnode.c b/src/spicelib/devices/cktbindnode.c index 0da37e6c6..e1232c93c 100644 --- a/src/spicelib/devices/cktbindnode.c +++ b/src/spicelib/devices/cktbindnode.c @@ -28,31 +28,8 @@ CKTbindNode(CKTcircuit *ckt, GENinstance *instance, int term, CKTnode *node) mappednode = node->number; if (*(devs[type]->DEVpublic.terms) >= term && term > 0) { - switch(term) { - default: - return E_NOTERM; - case 1: - instance->GENnode1 = mappednode; - break; - case 2: - instance->GENnode2 = mappednode; - break; - case 3: - instance->GENnode3 = mappednode; - break; - case 4: - instance->GENnode4 = mappednode; - break; - case 5: - instance->GENnode5 = mappednode; - break; - case 6:/* added to consider the body node 01/06/99 */ - instance->GENnode6 = mappednode; - break; - case 7:/* added to consider the temp node 02/03/99 */ - instance->GENnode7 = mappednode; - break; - } + /* argh, terminals are counted from 1 */ + instance->GENnode[term - 1] = mappednode; return OK; } else { return E_NOTERM;