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: 1986 Wayne A. Christopher
5          1992 Stephen R. Whiteley
6 ****************************************************************************/
7 
8 /*
9  * Definitions for external symbols in FTE.
10  */
11 
12 #ifndef FTEext_h
13 #define FTEext_h
14 
15 
16 /* main.c (in bin) */
17 extern bool ft_nutmeg;
18 extern char *ft_rawfile;
19 extern char *errRtn;
20 extern char *errMsg;
21 extern char *cp_program;
22 extern char *cp_display;
23 extern IFsimulator *ft_sim;
24 #ifdef __STDC__
25 extern struct variable *(*if_getparam)(char*,char**,char*,int,wordlist**);
26 #else
27 extern struct variable *(*if_getparam)();
28 #endif
29 
30 extern struct circ *ft_curckt;
31 extern struct circ *ft_circuits;
32 
33 extern bool ft_intrpt;
34 extern bool ft_setflag;
35 extern bool ft_servermode;
36 extern bool ft_batchmode;
37 extern bool ft_nospiceadd;
38 extern bool ft_nopage;
39 extern bool ft_debug;
40 extern bool ft_parsedb;
41 extern bool ft_evdb;
42 extern bool ft_vecdb;
43 extern bool ft_grdb;
44 extern bool ft_gidb;
45 extern bool ft_controldb;
46 extern bool ft_asyncdb;
47 extern bool ft_simdb;
48 
49 extern FILE *cp_curin;
50 extern FILE *cp_curout;
51 extern FILE *cp_curerr;
52 extern FILE *cp_in;
53 extern FILE *cp_out;
54 extern FILE *cp_err;
55 
56 extern bool ft_listprint;
57 extern bool ft_optsprint;
58 extern bool ft_nodesprint;
59 extern bool ft_acctprint;
60 extern struct plot *plot_list;
61 
62 /* arg.c */
63 #ifdef __STDC__
64 extern int arg_print(wordlist*,struct comm*);
65 extern int arg_plot(wordlist*,struct comm*);
66 extern int arg_load(wordlist*,struct comm*);
67 extern int arg_let(wordlist*,struct comm*);
68 extern int arg_set(wordlist*,struct comm*);
69 extern int arg_display(void);
70 extern wordlist *outmenuprompt(char*);
71 #else
72 extern int arg_print();
73 extern int arg_plot();
74 extern int arg_load();
75 extern int arg_let();
76 extern int arg_set();
77 extern int arg_display();
78 extern wordlist *outmenuprompt();
79 #endif
80 
81 /* aspice.c */
82 #ifdef __STDC__
83 extern void com_aspice(wordlist*);
84 extern void com_jobs(wordlist*);
85 extern void ft_checkkids(void);
86 extern void com_rspice(wordlist*);
87 #else
88 extern void com_aspice();
89 extern void com_jobs();
90 extern void ft_checkkids();
91 extern void com_rspice();
92 #endif
93 
94 /* cmath1.c */
95 extern bool cx_degrees;
96 #ifdef __STDC__
97 extern char *cx_mag(char*,int,int,int*,short*);
98 extern char *cx_ph(char*,int,int,int*,short*);
99 extern char *cx_j(char*,int,int,int*,short*);
100 extern char *cx_real(char*,int,int,int*,short*);
101 extern char *cx_imag(char*,int,int,int*,short*);
102 extern char *cx_pos(char*,int,int,int*,short*);
103 extern char *cx_db(char*,int,int,int*,short*);
104 extern char *cx_log(char*,int,int,int*,short*);
105 extern char *cx_ln(char*,int,int,int*,short*);
106 extern char *cx_exp(char*,int,int,int*,short*);
107 extern char *cx_sqrt(char*,int,int,int*,short*);
108 extern char *cx_sin(char*,int,int,int*,short*);
109 extern char *cx_cos(char*,int,int,int*,short*);
110 #else
111 extern char *cx_mag();
112 extern char *cx_ph();
113 extern char *cx_j();
114 extern char *cx_real();
115 extern char *cx_imag();
116 extern char *cx_pos();
117 extern char *cx_db();
118 extern char *cx_log();
119 extern char *cx_ln();
120 extern char *cx_exp();
121 extern char *cx_sqrt();
122 extern char *cx_sin();
123 extern char *cx_cos();
124 #endif
125 
126 /* cmath2.c */
127 #ifdef __STDC__
128 extern char *cx_tan(char*,int,int,int*,short*);
129 extern char *cx_atan(char*,int,int,int*,short*);
130 extern char *cx_norm(char*,int,int,int*,short*);
131 extern char *cx_uminus(char*,int,int,int*,short*);
132 extern char *cx_mean(char*,int,int,int*,short*);
133 extern char *cx_length(char*,int,int,int*,short*);
134 extern char *cx_vector(char*,int,int,int*,short*);
135 extern char *cx_unitvec(char*,int,int,int*,short*);
136 extern char *cx_plus(char*,char*,int,int,int);
137 extern char *cx_minus(char*,char*,int,int,int);
138 extern char *cx_times(char*,char*,int,int,int);
139 extern char *cx_mod(char*,char*,int,int,int);
140 extern char *cx_rnd(char*,int,int,int*,short*);
141 extern char *cx_gauss(char*,int,int,int*,short*);
142 #else
143 extern char *cx_tan();
144 extern char *cx_atan();
145 extern char *cx_norm();
146 extern char *cx_uminus();
147 extern char *cx_mean();
148 extern char *cx_length();
149 extern char *cx_vector();
150 extern char *cx_unitvec();
151 extern char *cx_plus();
152 extern char *cx_minus();
153 extern char *cx_times();
154 extern char *cx_mod();
155 extern char *cx_rnd();
156 extern char *cx_gauss();
157 #endif
158 
159 /* cmath3.c */
160 #ifdef __STDC__
161 extern char *cx_divide(char*,char*,int,int,int);
162 extern char *cx_comma(char*,char*,int,int,int);
163 extern char *cx_power(char*,char*,int,int,int);
164 extern char *cx_eq(char*,char*,int,int,int);
165 extern char *cx_gt(char*,char*,int,int,int);
166 extern char *cx_lt(char*,char*,int,int,int);
167 extern char *cx_ge(char*,char*,int,int,int);
168 extern char *cx_le(char*,char*,int,int,int);
169 extern char *cx_ne(char*,char*,int,int,int);
170 #else
171 extern char *cx_divide();
172 extern char *cx_comma();
173 extern char *cx_power();
174 extern char *cx_eq();
175 extern char *cx_gt();
176 extern char *cx_lt();
177 extern char *cx_ge();
178 extern char *cx_le();
179 extern char *cx_ne();
180 #endif
181 
182 /* cmath4.c */
183 #ifdef __STDC__
184 extern char *cx_and(char*,char*,int,int,int);
185 extern char *cx_or(char*,char*,int,int,int);
186 extern char *cx_not(char*,int,int,int*,short*);
187 extern char *cx_interpolate(char*,int,int,int*,short*,
188             struct plot*,struct plot*);
189 extern char *cx_deriv(char*,int,int,int*,short*,
190             struct plot*,struct plot*);
191 #else
192 extern char *cx_and();
193 extern char *cx_or();
194 extern char *cx_not();
195 extern char *cx_interpolate();
196 extern char *cx_deriv();
197 #endif
198 
199 /* spcmdtab.c or nutctab.c */
200 extern struct comm *cp_coms;
201 
202 /* compose.c */
203 #ifdef __STDC__
204 extern void com_compose(wordlist*);
205 extern double xrandom(void);
206 extern double xgauss(void);
207 #else
208 extern void com_compose();
209 extern double xrandom();
210 extern double xgauss();
211 #endif
212 
213 /* cpitf.c symbols declared in CPextern.h */
214 
215 /* define.c */
216 #ifdef __STDC__
217 extern void com_define(wordlist*);
218 extern struct pnode *ft_substdef(char*,struct pnode*);
219 extern void com_undefine(wordlist*);
220 #else
221 extern void com_define();
222 extern struct pnode *ft_substdef();
223 extern void com_undefine();
224 #endif
225 
226 /* diff.c */
227 #ifdef __STDC__
228 extern void com_diff(wordlist*);
229 #else
230 extern void com_diff();
231 #endif
232 
233 /* error.c */
234 extern char ErrorMessage[];
235 #ifdef __STDC__
236 extern void fperror(char*,int);
237 extern void ft_sperror(int,char*);
238 extern void fatal(void);
239 #else
240 extern void fperror();
241 extern void ft_sperror();
242 extern void fatal();
243 #endif
244 
245 /* evaluate.c */
246 #ifdef __STDC__
247 extern struct dvec *ft_evaluate(struct pnode*);
248 extern struct dvlist *ft_dvlist(struct pnode*);
249 extern struct dvec *op_plus(struct pnode*,struct pnode*);
250 extern struct dvec *op_minus(struct pnode*,struct pnode*);
251 extern struct dvec *op_comma(struct pnode*,struct pnode*);
252 extern struct dvec *op_times(struct pnode*,struct pnode*);
253 extern struct dvec *op_mod(struct pnode*,struct pnode*);
254 extern struct dvec *op_divide(struct pnode*,struct pnode*);
255 extern struct dvec *op_power(struct pnode*,struct pnode*);
256 extern struct dvec *op_eq(struct pnode*,struct pnode*);
257 extern struct dvec *op_gt(struct pnode*,struct pnode*);
258 extern struct dvec *op_lt(struct pnode*,struct pnode*);
259 extern struct dvec *op_ge(struct pnode*,struct pnode*);
260 extern struct dvec *op_le(struct pnode*,struct pnode*);
261 extern struct dvec *op_ne(struct pnode*,struct pnode*);
262 extern struct dvec *op_and(struct pnode*,struct pnode*);
263 extern struct dvec *op_or(struct pnode*,struct pnode*);
264 extern struct dvec *op_range(struct pnode*,struct pnode*);
265 extern struct dvec *op_ind(struct pnode*,struct pnode*);
266 extern struct dvec *op_uminus(struct pnode*);
267 extern struct dvec *op_not(struct pnode*);
268 #else
269 extern struct dvec *ft_evaluate();
270 extern struct dvlist *ft_dvlist();
271 extern struct dvec *op_plus();
272 extern struct dvec *op_minus();
273 extern struct dvec *op_comma();
274 extern struct dvec *op_times();
275 extern struct dvec *op_mod();
276 extern struct dvec *op_divide();
277 extern struct dvec *op_power();
278 extern struct dvec *op_eq();
279 extern struct dvec *op_gt();
280 extern struct dvec *op_lt();
281 extern struct dvec *op_ge();
282 extern struct dvec *op_le();
283 extern struct dvec *op_ne();
284 extern struct dvec *op_and();
285 extern struct dvec *op_or();
286 extern struct dvec *op_range();
287 extern struct dvec *op_ind();
288 extern struct dvec *op_uminus();
289 extern struct dvec *op_not();
290 #endif
291 
292 /* inpcom.c */
293 #ifdef __STDC__
294 extern char *readline(FILE*);
295 extern FILE *inp_pathopen(char*,char*);
296 extern void inp_readall(FILE*,struct line**,char*);
297 extern void inp_casefix(char*);
298 extern void inp_deckfree(struct line*);
299 extern struct line *inp_deckcopy(struct line*);
300 #else
301 extern char *readline();
302 extern FILE *inp_pathopen();
303 extern void inp_readall();
304 extern void inp_casefix();
305 extern void inp_deckfree();
306 extern struct line *inp_deckcopy();
307 #endif
308 
309 /* interp.c */
310 #ifdef __STDC__
311 extern bool ft_interpolate(double*,double*,double*,int,double*,int,int);
312 extern bool ft_polyfit(double*,double*,double*,int,double*);
313 extern double ft_peval(double,double*,int);
314 #else
315 extern bool ft_interpolate();
316 extern bool ft_polyfit();
317 extern double ft_peval();
318 #endif
319 
320 /* misccoms.c */
321 #ifdef __STDC__
322 extern void com_help(wordlist*);
323 extern void com_ahelp(wordlist*);
324 extern void com_ghelp(wordlist*);
325 extern void com_quit(wordlist*);
326 extern void com_bug(wordlist*);
327 extern void com_version(wordlist*);
328 #else
329 extern void com_help();
330 extern void com_ahelp();
331 extern void com_ghelp();
332 extern void com_quit();
333 extern void com_bug();
334 extern void com_version();
335 #endif
336 
337 /* numparse.c */
338 extern bool ft_strictnumparse;
339 #ifdef __STDC__
340 extern double *ft_numparse(char**,bool);
341 #else
342 extern double *ft_numparse();
343 #endif
344 
345 /* nutinp.c */
346 #ifdef __STDC__
347 extern void nutcom_edit(wordlist*);
348 extern void nutcom_sced(wordlist*);
349 extern bool inp_edit(char*);
350 extern void inp_nutsource(FILE*,bool,char*);
351 extern void nutcom_source(wordlist*);
352 #else
353 extern void nutcom_edit();
354 extern void nutcom_sced();
355 extern bool inp_edit();
356 extern void inp_nutsource();
357 extern void nutcom_source();
358 #endif
359 
360 /* options.c */
361 #ifdef __STDC__
362 extern void cp_internal_init(void);
363 extern void com_usrset(wordlist*);
364 extern int  cp_internalset(struct variable*,bool);
365 extern struct variable *cp_enqvar(char*);
366 extern struct variable *cp_uservars(struct variable**,struct variable**);
367 extern struct line *inp_getopts(struct line*);
368 #else
369 extern void cp_internal_init();
370 extern void com_usrset();
371 extern int  cp_internalset();
372 extern struct variable *cp_enqvar();
373 extern struct variable *cp_uservars();
374 extern struct line *inp_getopts();
375 #endif
376 
377 /* parse.c */
378 extern struct func ft_funcs[];
379 extern struct func func_not;
380 extern struct func func_uminus;
381 #ifdef __STDC__
382 extern struct pnode *ft_getpnames(wordlist*,bool);
383 extern void inp_pnfree(struct pnode*);
384 #else
385 extern struct pnode *ft_getpnames();
386 extern void inp_pnfree();
387 #endif
388 
389 /* postcoms.c */
390 #ifdef __STDC__
391 extern void com_let(wordlist*);
392 extern void com_unlet(wordlist*);
393 extern void com_load(wordlist*);
394 extern void com_print(wordlist*);
395 extern void com_write(wordlist*);
396 extern void com_display(wordlist*);
397 extern void com_splot(wordlist*);
398 extern void com_cross(wordlist*);
399 extern void com_destroy(wordlist*);
400 #else
401 extern void com_let();
402 extern void com_unlet();
403 extern void com_load();
404 extern void com_print();
405 extern void com_write();
406 extern void com_display();
407 extern void com_splot();
408 extern void com_cross();
409 extern void com_destroy();
410 #endif
411 
412 /* rawfile.c */
413 extern int raw_prec;
414 #ifdef __STDC__
415 extern void raw_write(char*,struct plot*,bool,bool);
416 extern struct plot *raw_read(char*);
417 #else
418 extern void raw_write();
419 extern struct plot *raw_read();
420 #endif
421 
422 /* resource.c */
423 #ifdef __STDC__
424 extern void com_rusage(wordlist*);
425 extern void ft_ckspace(void);
426 extern void rusage_init(void);
427 #else
428 extern void com_rusage();
429 extern void ft_ckspace();
430 extern void rusage_init();
431 #endif
432 
433 /* signal.c */
434 #ifdef __STDC__
435 extern RETSIGTYPE ft_sigintr(void);
436 extern RETSIGTYPE sigfloat(int,int);
437 extern RETSIGTYPE sigstop(void);
438 extern RETSIGTYPE sigcont(void);
439 extern RETSIGTYPE sigill(void);
440 extern RETSIGTYPE sigbus(void);
441 extern RETSIGTYPE sigsegv(void);
442 extern RETSIGTYPE sig_sys(void);
443 #else
444 extern RETSIGTYPE ft_sigintr();
445 extern RETSIGTYPE sigfloat();
446 extern RETSIGTYPE sigstop();
447 extern RETSIGTYPE sigcont();
448 extern RETSIGTYPE sigill();
449 extern RETSIGTYPE sigbus();
450 extern RETSIGTYPE sigsegv();
451 extern RETSIGTYPE sig_sys();
452 #endif
453 
454 /* spiceif.c or nutmegif.c */
455 #ifdef __STDC__
456 extern char *if_inpdeck(struct line*,char**);
457 extern int  if_run(char*,wordlist*);
458 extern void if_option(char*,char*,int,char*);
459 extern void if_dump(char*,FILE*);
460 extern void if_cktfree(char*,char*);
461 extern void if_cktclear(void);
462 extern char *if_errstring(int);
463 extern struct variable *spif_getparam(char*,char**,char*,int,wordlist**);
464 extern void if_setparam(char*,char*,char*,struct variable*);
465 extern void if_setndnames(char*);
466 extern struct variable *if_getstat(char*,char*,wordlist**);
467 extern struct variable *nutif_getparam(char*,char**,char*,int,wordlist**);
468 extern wordlist *GetAnalysisFromDeck(void);
469 extern int  InProgress(void);
470 extern int  IsIplot(void);
471 #else
472 extern char *if_inpdeck();
473 extern int  if_run();
474 extern void if_option();
475 extern void if_dump();
476 extern void if_cktfree();
477 extern void if_cktclear();
478 extern char *if_errstring();
479 extern struct variable *spif_getparam();
480 extern void if_setparam();
481 extern void if_setndnames();
482 extern struct variable *if_getstat();
483 extern struct variable *nutif_getparam();
484 extern wordlist *GetAnalysisFromDeck();
485 extern int  InProgress();
486 extern int  IsIplot();
487 #endif
488 
489 /* types.c */
490 #ifdef __STDC__
491 extern void com_dftype(wordlist*);
492 extern char *ft_typabbrev(int);
493 extern char *ft_typenames(int);
494 extern int ft_typnum(char*);
495 extern char *ft_plotabbrev(char*);
496 extern void com_stype(wordlist*);
497 #else
498 extern void com_dftype();
499 extern char *ft_typabbrev();
500 extern char *ft_typenames();
501 extern int ft_typnum();
502 extern char *ft_plotabbrev();
503 extern void com_stype();
504 #endif
505 
506 /* vectors.c */
507 extern struct plot *plot_cur;
508 #ifdef __STDC__
509 extern void ft_loadfile(char*);
510 extern void plot_add(struct plot*);
511 extern void plot_new(struct plot*);
512 extern void plot_delete(struct plot*);
513 extern void plot_setcur(char*);
514 extern void plot_docoms(wordlist*);
515 extern struct plot *plot_alloc(char*);
516 extern bool plot_prefix(char*,char*);
517 extern void vec_newtemp(struct dvec*);
518 extern void vec_newperm(struct dvec*);
519 extern void vec_remove(char*);
520 extern void vec_dlfree(struct dvlist*);
521 extern struct dvec *vec_fromplot(char*,struct plot*);
522 extern struct dvec *vec_get(char*);
523 extern struct dvec *vec_copy(struct dvec*);
524 extern void vec_gc(void);
525 extern bool vec_eq(struct dvec*,struct dvec*);
526 extern char *vec_basename(struct dvec*);
527 extern void vec_sort(struct dvec*);
528 extern struct dvec *vec_mkfamily(struct dvec*);
529 #else
530 extern void ft_loadfile();
531 extern void plot_add();
532 extern void plot_new();
533 extern void plot_delete();
534 extern void plot_setcur();
535 extern struct plot *plot_alloc();
536 extern bool plot_prefix();
537 extern void vec_newtemp();
538 extern void vec_newperm();
539 extern void vec_remove();
540 extern void vec_dlfree();
541 extern struct dvec *vec_fromplot();
542 extern struct dvec *vec_get();
543 extern void plot_docoms();
544 extern struct dvec *vec_copy();
545 extern void vec_gc();
546 extern bool vec_eq();
547 extern char *vec_basename();
548 extern void vec_sort();
549 extern struct dvec *vec_mkfamily();
550 #endif
551 
552 #endif /* FTEext_h */
553