/* ARGSUSED */ int CKTmapNode(void *ckt, void **node, IFuid name) { CKTnode *here; int error; IFuid uid; CKTnode *mynode; for (here = ((CKTcircuit *)ckt)->CKTnodes; here; here = here->next) { if(here->name == name) { if(node) *node = (char *)here; return(E_EXISTS); } } /* not found, so must be a new one */ error = CKTmkNode((CKTcircuit*)ckt,&mynode); /*allocate the node*/ if(error) return(error); error = (*(SPfrontEnd->IFnewUid))((void *)ckt, &uid, (IFuid) NULL, name, UID_SIGNAL, (void**)mynode); /* get a uid for it */ if(error) return(error); mynode->name = uid; /* set the info we have */ mynode->type = SP_VOLTAGE; error = CKTlinkEq((CKTcircuit*)ckt,mynode); /* and link it in */ if(node) *node = (void *)mynode; /* and finally, return it */ return(OK); }
/* ARGSUSED */ int CKTmkVolt(CKTcircuit *ckt, CKTnode **node, IFuid basename, char *suffix) { IFuid uid; int error; CKTnode *mynode; CKTnode *checknode; error = CKTmkNode(ckt,&mynode); if(error) return(error); checknode = mynode; error = (*(SPfrontEnd->IFnewUid))(ckt,&uid,basename, suffix, UID_SIGNAL, &checknode); if(error) { FREE(mynode); if(node) *node = checknode; return(error); } mynode->name = uid; mynode->type = SP_VOLTAGE; if(node) *node = mynode; error = CKTlinkEq(ckt,mynode); return(error); }