Jspice3
inpdomod.c
Go to the documentation of this file.
1 /***************************************************************************
2 JSPICE3 adaptation of Spice3e2 - Copyright (c) Stephen R. Whiteley 1992
3 Copyright 1990 Regents of the University of California. All rights reserved.
4 Authors: 1987 Thomas L. Quarles
5  1993 Stephen R. Whiteley
6 ****************************************************************************/
7 
8 #include "spice.h"
9 #include "inpdefs.h"
10 #include "iferrmsg.h"
11 #include "misc.h"
12 
13 
14 /*ARGSUSED*/
15 char *
16 INPdomodel(ckt,image,tab)
17 
18 GENERIC *ckt;
19 card *image;
20 INPtables *tab;
21 {
22 
23  char *modname, *token;
24  char typename[8];
25  char *err = (char *)NULL;
26  char *line, **s;
27  int i, lev;
28 
29  line = image->line;
30  INPgetTok(&line,&token,1); /* throw away '.model' */
31  txfree(token);
32 
33  INPgetTok(&line,&modname,1);
34  INPinsert(&modname,tab);
35 
36  INPgetTok(&line,&token,1);
37  if (!token) {
38  err = (char *)tmalloc(35 + strlen(typename));
39  (void)sprintf(err,".model syntax error - ignored\n");
40  return (err);
41  }
42 
43  for (i = 0; i < 4 && token[i]; i++) {
44  typename[i] = (isupper(token[i]) ? tolower(token[i]) : token[i]);
45  }
46  typename[i] = '\0';
47  txfree(token);
48 
49  for (i = 0; i < ft_sim->numDevices; i++) {
50  s = ft_sim->devices[i]->modelKeys;
51  if (s == NULL)
52  continue;
53  for (; *s; s++) {
54  if (!strcmp(*s,typename)) {
55  (void)INPfindLev(line,&lev);
56  lev--;
57  if (ft_sim->devices[i]->levelMask & (1 << lev)) {
58  INPmakeMod(modname,i,image);
59  return (NULL);
60  }
61  break;
62  }
63  }
64  }
65  err = (char *)tmalloc(35 + strlen(typename));
66  (void)sprintf(err,"unknown model type %s - ignored\n",typename);
67  return (err);
68 }
IFsimulator * ft_sim
Definition: main.c:111
char * line
Definition: inpdefs.h:64
Definition: cddefs.h:119
int INPmakeMod()
Definition: inpdefs.h:62
unsigned levelMask
Definition: ifsim.h:304
Definition: subckt.c:51
int INPinsert()
char * tmalloc()
Definition: fteinp.h:14
IFdevice ** devices
Definition: ifsim.h:461
void txfree()
char ** modelKeys
Definition: ifsim.h:305
#define NULL
Definition: spdefs.h:121
char * INPfindLev()
int numDevices
Definition: ifsim.h:460
Definition: mfb.h:383
char * INPdomodel(GENERIC *ckt, card *image, INPtables *tab)
Definition: inpdomod.c:16
char GENERIC
Definition: ifsim.h:27
int INPgetTok()