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

42 lines
1023 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 *kill)
2000-04-27 22:03:57 +02:00
{
2011-02-27 21:40:48 +01:00
VSRCmodel **model = (VSRCmodel **) inModel;
VSRCmodel *modfast = (VSRCmodel *) kill;
2000-04-27 22:03:57 +02:00
VSRCinstance *here;
VSRCinstance *prev = NULL;
VSRCmodel **oldmod;
2000-04-27 22:03:57 +02:00
oldmod = model;
for (; *model; model = &((*model)->VSRCnextModel)) {
2018-01-04 22:38:33 +01:00
if ((*model)->VSRCmodName == modname || (modfast && *model == modfast))
goto delgot;
2000-04-27 22:03:57 +02:00
oldmod = model;
}
return E_NOMOD;
delgot:
2000-04-27 22:03:57 +02:00
*oldmod = (*model)->VSRCnextModel; /* cut deleted device out of list */
for (here = (*model)->VSRCinstances; here; here = here->VSRCnextInstance) {
2018-01-04 22:38:33 +01:00
if (prev)
FREE(prev);
2000-04-27 22:03:57 +02:00
prev = here;
}
2018-01-04 22:38:33 +01:00
if (prev)
FREE(prev);
2000-04-27 22:03:57 +02:00
FREE(*model);
return OK;
2000-04-27 22:03:57 +02:00
}