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          1992 Stephen R. Whiteley
6 ****************************************************************************/
7 
8 #ifndef INP
9 #define INP
10 
11     /* structure declarations used by either/both input package */
12 
13 #include "ifsim.h"
14 #include "gendefs.h"
15 #include "inpptree.h"
16 
17 extern IFsimulator *ft_sim;
18 
19 struct INPtab {
20     char *t_ent;
21     struct INPtab *t_next;
22 };
23 
24 struct INPnTab {
25     char *t_ent;
26     GENERIC* t_node;
27     struct INPnTab *t_next;
28 };
29 
30 typedef struct sINPtables{
31     struct INPtab **INPsymtab;
32     struct INPnTab **INPtermsymtab;
33     int INPsize;
34     int INPtermsize;
35     GENERIC *defAmod;
36     GENERIC *defBmod;
37     GENERIC *defCmod;
38     GENERIC *defDmod;
39     GENERIC *defEmod;
40     GENERIC *defFmod;
41     GENERIC *defGmod;
42     GENERIC *defHmod;
43     GENERIC *defImod;
44     GENERIC *defJmod;
45     GENERIC *defKmod;
46     GENERIC *defLmod;
47     GENERIC *defMmod;
48     GENERIC *defNmod;
49     GENERIC *defOmod;
50     GENERIC *defPmod;
51     GENERIC *defQmod;
52     GENERIC *defRmod;
53     GENERIC *defSmod;
54     GENERIC *defTmod;
55     GENERIC *defUmod;
56     GENERIC *defVmod;
57     GENERIC *defWmod;
58     GENERIC *defYmod;
59     GENERIC *defZmod;
60 } INPtables;
61 
62 typedef struct card {
63     int linenum;
64     char *line;
65     char *error;
66     struct card *nextcard;
67     struct card *actualLine;
68 } card;
69 
70 /* structure used to save models in after they are read during pass 1 */
71 typedef struct sINPmodel{
72     IFuid INPmodName;   /* uid of model */
73     int INPmodType;     /* type index of device type */
74     struct sINPmodel *INPnextModel;  /* link to next model */
75     int INPmodUsed;     /* flag to indicate it has already been used */
76     card *INPmodLine;   /* pointer to line describing model */
77     GENERIC *INPmodfast;   /* high speed pointer to model for access */
78 } INPmodel;
79 
80 /* listing types - used for debug listings */
81 #define LOGICAL 1
82 #define PHYSICAL 2
83 
84 
85 /* from analysis routines */
86 #ifdef __STDC__
87 extern int ParseAC(GENERIC*,char**,card*,int,GENERIC*,INPtables*);
88 extern int ParseDC(GENERIC*,char**,card*,int,GENERIC*,INPtables*,int);
89 extern int ParseTRAN(GENERIC*,char**,card*,int,GENERIC*,INPtables*);
90 #else
91 extern int ParseAC();
92 extern int ParseDC();
93 extern int ParseTRAN();
94 #endif
95 
96 
97 /* inptabpa.c */
98 #ifdef __STDC__
99 extern char     *INPtablParse(char**,GENERIC*);
100 extern char     *INPtablCheck(char*,GENERIC*);
101 extern void     INPtablFix(GENERIC*);
102 extern int      INPtablFind(char*,GENERIC*,GENERIC**);
103 extern double   INPtablEval(GENERIC*,double);
104 extern void     INPtablFree(GENERIC*);
105 #else
106 extern char     *INPtablParse();
107 extern char     *INPtablCheck();
108 extern void     INPtablFix();
109 extern int      INPtablFind();
110 extern double   INPtablEval();
111 extern void     INPtablFree();
112 #endif
113 
114 
115 #ifdef __STDC__
116 extern int      IFnewUid(GENERIC*,IFuid*,IFuid,char*,int,GENERIC**);
117 extern int      INP2dot(GENERIC*,INPtables*,card*,GENERIC*,GENERIC*);
118 extern int      INPaName(char*,IFvalue*,GENERIC*,int*,char*,GENERIC**,
119                     IFsimulator*,int*,IFvalue*);
120 extern int      INPapName(GENERIC*,int,GENERIC*,char*,IFvalue*);
121 extern char     *INPdevErr(char *);
122 extern char     *INPdevParse(char**,GENERIC*,int,GENERIC*,double*,int*,
123                     INPtables*);
124 extern char     *INPdomodel(GENERIC *,card*, INPtables*);
125 extern char     *INPerrCat(char *, char *);
126 extern char     *INPerror(int);
127 extern double   INPevaluate(char**,int*,int);
128 extern char     *INPfindLev(char*,int*);
129 extern char     *INPgetMod(GENERIC*,char*,INPmodel**,INPtables*);
130 extern int      INPgetTok(char**,char**,int);
131 extern void     INPgetTree(char**,INPparseTree**,GENERIC*,INPtables*);
132 extern IFvalue  *INPgetValue(GENERIC*,char**,int,INPtables*);
133 extern int      INPgndInsert(GENERIC*,char**,INPtables*,GENERIC**);
134 extern int      INPinsert(char**,INPtables*);
135 extern void     INPkillMods(void);
136 extern int      INPlookMod(char*);
137 extern int      INPmakeMod(char*,int,card*);
138 extern int      INPmkTerm(GENERIC*,char**,INPtables*,GENERIC**);
139 extern int      INPnumRefs(int,int*,int*,int*,int*);
140 extern int      INPpName(char*,IFvalue*,GENERIC*,int,GENERIC*);
141 extern void     INPpas1(GENERIC*,card*,INPtables*);
142 extern void     INPpas2(GENERIC*,card*,INPtables*,GENERIC *);
143 extern void     INPptPrint(char*,IFparseTree*);
144 extern void     INPtabEnd(INPtables *);
145 extern INPtables *INPtabInit(int);
146 extern int      INPtermInsert(GENERIC*,char**,INPtables*,GENERIC**);
147 
148 #else /* stdc */
149 
150 extern int      IFnewUid();
151 extern int      INP2dot();
152 extern int      INPaName();
153 extern int      INPapName();
154 extern char     *INPdevErr();
155 extern char     *INPdevParse();
156 extern char     *INPdomodel();
157 extern char     *INPerrCat();
158 extern char     *INPerror();
159 extern double   INPevaluate();
160 extern char     *INPfindLev();
161 extern char     *INPgetMod();
162 extern int      INPgetTok();
163 extern void     INPgetTree();
164 extern IFvalue  *INPgetValue();
165 extern int      INPgndInsert();
166 extern int      INPinsert();
167 extern void     INPkillMods();
168 extern int      INPlookMod();
169 extern int      INPmakeMod();
170 extern int      INPmkTerm();
171 extern int      INPnumRefs();
172 extern int      INPpName();
173 extern void     INPpas1() ;
174 extern void     INPpas2() ;
175 extern void     INPptPrint();
176 extern void     INPtabEnd();
177 extern INPtables *INPtabInit();
178 extern int      INPtermInsert();
179 
180 #endif /* stdc */
181 
182 #endif /*INP*/
183