⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 inpdpar.c

📁 ngspice又一个电子CAD仿真软件代码.功能更全
💻 C
字号:
/**********Copyright 1990 Regents of the University of California.  All rights reserved.Author: 1985 Thomas L. Quarles**********/    /*     * INPdevParse()     *     *  parse a given input according to the standard rules - look     *  for the parameters given in the parmlists, In addition,      *  an optional leading numeric parameter is handled.     */#include "ngspice.h"#include <stdio.h>#include "ifsim.h"#include "inpdefs.h"#include "iferrmsg.h"#include "cpdefs.h"#include "fteext.h"#include "inp.h"char *INPdevParse(char **line, void *ckt, int dev, void *fast,		  double *leading, int *waslead, INPtables * tab)		    /* the line to parse */		 /* the circuit this device is a member of */		    /* the device type code to the device being parsed */		      /* direct pointer to device being parsed */		    /* the optional leading numeric parameter */		    /* flag - 1 if leading double given, 0 otherwise */{    int error;			/* int to store evaluate error return codes in */    char *parm=NULL;    char *errbuf;    int i;    IFvalue *val;    char *rtn=NULL;    /* check for leading value */    *waslead = 0;    *leading = INPevaluate(line, &error, 1);    if (error == 0) {		/* found a good leading number */	*waslead = 1;    } else	*leading = 0.0;    while (**line != (char) 0) {	error = INPgetTok(line, &parm, 1);	if (!*parm) {	    FREE(parm);	    continue;	}	if (error) {	    rtn  = (INPerror(error));	    goto quit;	}	for (i = 0; i < (*(*(ft_sim->devices)[dev]).numInstanceParms); i++) {	    if (strcmp(parm,		       ((*(ft_sim->devices)[dev]).instanceParms[i].			keyword)) == 0) {		val =		    INPgetValue(ckt, line,				((*(ft_sim->devices)[dev]).				 instanceParms[i].dataType), tab);		if (!val) {		    rtn = (INPerror(E_PARMVAL));		    goto quit;		}		error = (*(ft_sim->setInstanceParm)) (ckt, fast,						      (*(ft_sim->devices)						       [dev]).						      instanceParms[i].id,						      val,						      (IFvalue *) NULL);		if (error) {		    rtn = (INPerror(error));		    goto quit;		}		break;	    }	}	if (i == (*(*(ft_sim->devices)[dev]).numInstanceParms)) {	    errbuf = MALLOC(strlen(parm) + 25);	    (void) sprintf(errbuf, " unknown parameter (%s) \n", parm);	    rtn = (errbuf);	    goto quit;	}	FREE(parm);    }quit:   FREE(parm);   return rtn;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -