ngspice/src/spicelib/devices/urc/urcmdel.c

45 lines
1.0 KiB
C

/**********
Copyright 1990 Regents of the University of California. All rights reserved.
Author: 1987 Thomas L. Quarles
**********/
/*
*/
#include "ngspice.h"
#include <stdio.h>
#include "urcdefs.h"
#include "sperror.h"
#include "suffix.h"
int
URCmDelete(inModel,modname,kill)
GENmodel **inModel;
IFuid modname;
GENmodel *kill;
{
URCmodel **model = (URCmodel**)inModel;
URCmodel *modfast = (URCmodel *)kill;
URCinstance *here;
URCinstance *prev = NULL;
URCmodel **oldmod;
oldmod = model;
for( ; *model ; model = &((*model)->URCnextModel)) {
if( (*model)->URCmodName == modname ||
(modfast && *model == modfast) ) goto delgot;
oldmod = model;
}
return(E_NOMOD);
delgot:
*oldmod = (*model)->URCnextModel; /* cut deleted device out of list */
for(here = (*model)->URCinstances ; here ; here = here->URCnextInstance) {
if(prev) FREE(prev);
prev = here;
}
if(prev) FREE(prev);
FREE(*model);
return(OK);
}