ngspice/src/spicelib/devices/vsrc/vsrcmdel.c

41 lines
1015 B
C
Raw Normal View History

2000-04-27 22:03:57 +02:00
/**********
Copyright 1990 Regents of the University of California. All rights reserved.
Author: 1985 Thomas L. Quarles
**********/
/*
*/
#include <ngspice/ngspice.h>
2000-04-27 22:03:57 +02:00
#include "vsrcdefs.h"
#include <ngspice/sperror.h>
#include <ngspice/suffix.h>
2000-04-27 22:03:57 +02:00
int
VSRCmDelete(GENmodel **inModel, IFuid modname, GENmodel *fast)
2000-04-27 22:03:57 +02:00
{
2011-02-27 21:40:48 +01:00
VSRCmodel **model = (VSRCmodel **) inModel;
VSRCmodel *modfast = (VSRCmodel *) fast;
2000-04-27 22:03:57 +02:00
VSRCinstance *here;
VSRCinstance *prev = NULL;
VSRCmodel **oldmod;
oldmod = model;
for( ; *model ; model = &((*model)->VSRCnextModel)) {
2011-02-27 21:40:48 +01:00
if( (*model)->VSRCmodName == modname ||
2000-04-27 22:03:57 +02:00
(modfast && *model == modfast) ) goto delgot;
oldmod = model;
}
return(E_NOMOD);
delgot:
*oldmod = (*model)->VSRCnextModel; /* cut deleted device out of list */
for(here = (*model)->VSRCinstances ; here ; here = here->VSRCnextInstance) {
if(prev) FREE(prev);
prev = here;
}
if(prev) FREE(prev);
FREE(*model);
return(OK);
}