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