1 /********** 2 Copyright 1990 Regents of the University of California. All rights reserved. 3 Author: 1986 Wayne A. Christopher, U. C. Berkeley CAD Group 4 Modified: 1999 Paolo Nenzi - 2000 AlansFixes 5 **********/ 6 7 /* 8 * Definitions for all external symbols in FTE. 9 */ 10 11 #ifndef ngspice_FTEEXT_H 12 #define ngspice_FTEEXT_H 13 14 #include "ngspice/config.h" 15 16 /* needed to find out what the interface structures look like */ 17 #include "ngspice/typedefs.h" 18 #include "ngspice/ifsim.h" 19 #include "ngspice/dvec.h" 20 #include "ngspice/plot.h" 21 #include "ngspice/cpdefs.h" 22 #include "ngspice/ftedefs.h" 23 #include "ngspice/fteinp.h" 24 25 /* aspice.c */ 26 27 extern void ft_checkkids(void); 28 29 /* breakpoint.c */ 30 31 extern bool ft_bpcheck(struct plot *runplot, int iteration); 32 extern void dbfree(struct dbcomm *db); 33 extern void dbfree1(struct dbcomm *db); 34 35 36 /* breakp2.c */ 37 38 extern int ft_getSaves(struct save_info **); 39 40 41 /* circuits.c */ 42 43 extern struct circ *ft_curckt; 44 extern struct circ *ft_circuits; 45 extern struct subcirc *ft_subcircuits; 46 extern void ft_newcirc(struct circ *ci); 47 48 /* clip.c */ 49 50 extern bool clip_line(int *pX1, int *pY1, int *pX2, int *pY2, int l, int b, int r, int t); 51 extern bool clip_to_circle(int *x1, int *y1, int *x2, int *y2, int cx, int cy, int rad); 52 53 /* cmath1.c */ 54 55 extern bool cx_degrees; 56 extern void *cx_mag(void *, short int , int , int *, short int *); 57 extern void *cx_ph(void *, short int , int , int *, short int *); 58 extern void *cx_cph(void *, short int , int , int *, short int *); 59 extern void *cx_unwrap(void *, short int , int , int *, short int *); 60 extern void *cx_j(void *, short int , int , int *, short int *); 61 extern void *cx_real(void *, short int , int , int *, short int *); 62 extern void *cx_imag(void *, short int , int , int *, short int *); 63 extern void *cx_conj(void *, short int , int , int *, short int *); 64 extern void *cx_pos(void *, short int , int , int *, short int *); 65 extern void *cx_db(void *, short int , int , int *, short int *); 66 extern void *cx_log10(void *, short int , int , int *, short int *); 67 extern void *cx_log(void *, short int , int , int *, short int *); 68 extern void *cx_exp(void *, short int , int , int *, short int *); 69 extern void *cx_sqrt(void *, short int , int , int *, short int *); 70 extern void *cx_sin(void *, short int , int , int *, short int *); 71 extern void *cx_sinh(void *, short int , int , int *, short int *); 72 extern void *cx_cos(void *, short int , int , int *, short int *); 73 extern void *cx_cosh(void *, short int , int , int *, short int *); 74 extern void *cx_tan(void *, short int , int , int *, short int *); 75 extern void *cx_tanh(void *, short int , int , int *, short int *); 76 extern void *cx_atan(void *, short int , int , int *, short int *); 77 extern void *cx_floor(void *, short int , int , int *, short int *); 78 extern void *cx_ceil(void *, short int , int , int *, short int *); 79 extern void *cx_nint(void *, short int , int , int *, short int *); 80 extern void *cx_sortorder(void *, short int , int , int *, short int *); 81 82 /* cmath2.c */ 83 84 extern void *cx_norm(void *, short int , int , int *, short int *); 85 extern void *cx_uminus(void *, short int , int , int *, short int *); 86 extern void *cx_rnd(void *, short int , int , int *, short int *); 87 extern void *cx_sunif(void *, short int , int , int *, short int *); 88 extern void *cx_sgauss(void *, short int , int , int *, short int *); 89 extern void *cx_poisson(void *, short int , int , int *, short int *); 90 extern void *cx_exponential(void *, short int , int , int *, short int *); 91 extern void *cx_mean(void *, short int , int , int *, short int *); 92 extern void *cx_stddev(void *, short int , int , int *, short int *); 93 extern void *cx_length(void *, short int , int , int *, short int *); 94 extern void *cx_vector(void *, short int , int , int *, short int *); 95 extern void *cx_unitvec(void *, short int , int , int *, short int *); 96 extern void *cx_plus(void *, void *, short int , short int , int ); 97 extern void *cx_minus(void *, void *, short int , short int , int ); 98 extern void *cx_times(void *, void *, short int , short int , int ); 99 extern void *cx_mod(void *, void *, short int , short int , int ); 100 extern void *cx_max(void *, short int , int , int *, short int *); 101 extern void *cx_min(void *, short int , int , int *, short int *); 102 extern void *cx_d(void *, short int , int , int *, short int *); 103 extern void *cx_avg(void *, short int , int , int *, short int *); 104 105 106 /* cmath3.c */ 107 108 extern void *cx_divide(void *, void *, short int , short int , int); 109 extern void *cx_comma(void *, void *, short int , short int , int); 110 extern void *cx_power(void *, void *, short int , short int , int); 111 extern void *cx_eq(void *, void *, short int , short int , int); 112 extern void *cx_gt(void *, void *, short int , short int , int); 113 extern void *cx_lt(void *, void *, short int , short int , int); 114 extern void *cx_ge(void *, void *, short int , short int , int); 115 extern void *cx_le(void *, void *, short int , short int , int); 116 extern void *cx_ne(void *, void *, short int , short int , int); 117 118 /* cmath4.c */ 119 120 extern void *cx_and(void *, void *, short int , short int , int); 121 extern void *cx_or(void *, void *, short int , short int , int); 122 extern void *cx_not(void *, short int , int , int *, short int *); 123 124 extern void *cx_interpolate(void *, short int , int , int *, short int *, struct plot *, struct plot *, int ); 125 extern void *cx_deriv(void *, short int , int , int *, short int *, struct plot *, struct plot *, int ); 126 extern void *cx_group_delay(void *, short int , int , int *, short int *, struct plot *, struct plot *, int ); 127 extern void *cx_fft(void *, short int , int , int *, short int *, struct plot *, struct plot *, int ); 128 extern void *cx_ifft(void *, short int , int , int *, short int *, struct plot *, struct plot *, int ); 129 130 /* define.c */ 131 132 extern struct pnode *ft_substdef(const char *name, struct pnode *args); 133 extern void ft_pnode(struct pnode *pn); 134 135 /* DEVHELP*/ 136 extern void com_devhelp(wordlist *wl); 137 extern void com_inventory(wordlist *wl); 138 139 /* dotcards.c */ 140 141 extern bool ft_acctprint; 142 extern bool ft_noacctprint; 143 extern bool ft_noinitprint; 144 extern bool ft_norefprint; 145 extern bool ft_listprint; 146 extern bool ft_nopage; 147 extern bool ft_nomod; 148 extern bool ft_nodesprint; 149 extern bool ft_optsprint; 150 extern int ft_cktcoms(bool terse); 151 extern void ft_dotsaves(void); 152 extern int ft_savedotargs(void); 153 154 /* error.c */ 155 156 extern void fperror(char *mess, int code); 157 extern void ft_sperror(int code, char *mess); 158 extern char ErrorMessage[]; 159 extern void internalerror(char *); 160 extern void externalerror(char *); 161 extern bool ft_pipemode; 162 163 164 165 /* evaluate.c */ 166 167 extern struct dvec *ft_evaluate(struct pnode *node); 168 169 /* ftesopt.c */ 170 extern struct variable *ft_getstat(struct circ *, char *); 171 172 /* ginterface.c 173 174 extern bool gi_init(); 175 extern bool gi_endpause; 176 extern bool gi_rottext; 177 extern int gi_fntheight; 178 extern int gi_fntwidth; 179 extern int gi_maxx; 180 extern int gi_maxy; 181 extern int gi_nolst; 182 extern int gi_nocolors; 183 extern int gi_package; 184 extern void gi_arc(); 185 extern void gi_clearscreen(); 186 extern void gi_close(); 187 extern void gi_drawline(); 188 extern void gi_redraw(); 189 extern void gi_setcolor(); 190 extern void gi_resetcolor(); 191 extern void gi_setlinestyle(); 192 extern void gi_text(); 193 extern void gi_update(); 194 */ 195 196 /* graf.c */ 197 198 extern bool gr_gmode; 199 extern bool gr_hmode; 200 extern double gr_xrange[2]; 201 extern double gr_yrange[2]; 202 extern int gr_xmargin; 203 extern int gr_ymargin; 204 extern int gr_xcenter; 205 extern int gr_ycenter; 206 extern int gr_radius; 207 extern bool gr_circular; 208 209 /* inp.c */ 210 211 int inp_dodeck(struct card *deck, char *tt, wordlist *end, bool reuse, 212 struct card *options, char *filename); 213 extern void inp_source(const char *file); 214 int inp_spsource(FILE *fp, bool comfile, char *filename, bool intfile); 215 extern void inp_casefix(char *string); 216 extern void inp_list(FILE *file, struct card *deck, struct card *extras, int type); 217 struct card *inp_readall(FILE *fp, const char *dir_name, 218 bool comfile, bool intfile, bool *expr_w_temper_p); 219 extern FILE *inp_pathopen(const char *name, const char *mode); 220 extern char *search_identifier(char *str, const char *identifier, char *str_begin); 221 extern char *find_assignment(const char *s); 222 extern char *find_back_assignment(const char *s, const char *start); 223 224 extern struct card *line_nconc(struct card *head, struct card *rest); 225 extern struct card *line_reverse(struct card *head); 226 extern void inp_mc_free(void); 227 extern void inp_source_recent(void); 228 extern void inp_remove_recent(void); 229 230 extern char **circarray; 231 extern void rem_tlist(struct pt_temper *p); 232 233 /* nutinp.c */ 234 235 void inp_nutsource(FILE *fp, bool comfile, char *filename); 236 void nutinp_dodeck(struct card *deck, char *tt, wordlist *end, bool reuse, 237 struct card *options, char *filename); 238 extern void nutcom_source(wordlist *wl); 239 240 /* interpolate.c */ 241 242 extern bool ft_interpolate(double *data, double *ndata, double *oscale, int olen, double *nscale, int nlen, int degree); 243 extern bool ft_polyfit(double *xdata, double *ydata, double *result, int degree, double *scratch); 244 extern double ft_peval(double x, double *coeffs, int degree); 245 extern void ft_polyderiv(double *coeffs, int degree); 246 247 /* numparse.c */ 248 249 extern bool ft_strictnumparse; 250 int ft_numparse(char **s, bool whole, double *p_val); 251 252 /* options.c */ 253 254 extern bool ft_simdb; 255 extern bool ft_parsedb; 256 extern bool ft_evdb; 257 extern bool ft_vecdb; 258 extern bool ft_grdb; 259 extern bool ft_gidb; 260 extern bool ft_controldb; 261 extern bool ft_asyncdb; 262 extern char *ft_setkwords[]; 263 extern struct card *inp_getopts(struct card *deck); 264 extern struct card *inp_getoptsc(char *line, struct card *options); 265 extern bool ft_ngdebug; 266 extern bool ft_stricterror; 267 268 /* parse.c */ 269 270 extern struct func ft_funcs[]; 271 extern struct func func_not; 272 extern struct func func_uminus; 273 extern struct pnode *ft_getpnames(const wordlist *wl, bool check); 274 struct pnode *ft_getpnames_from_string(const char *sz, bool check); 275 extern struct pnode *alloc_pnode(void); 276 #define free_pnode(ptr) \ 277 do { \ 278 free_pnode_x(ptr); \ 279 ptr = NULL; \ 280 } while(0) 281 extern void free_pnode_x(struct pnode *t); 282 283 /* plotcurve.c */ 284 285 extern int ft_findpoint(double pt, double *lims, int maxp, int minp, bool islog); 286 extern double *ft_minmax(struct dvec *v, bool real); 287 extern void ft_graf(struct dvec *v, struct dvec *xs, bool nostart); 288 289 /* rawfile.c */ 290 extern int raw_prec; 291 extern void raw_write(char *name, struct plot *pl, bool app, bool binary); 292 extern void spar_write(char *name, struct plot *pl, double val); 293 extern struct plot *raw_read(char *name); 294 295 /* meas.c */ 296 extern bool do_measure(char *what, bool chk_only); 297 extern bool check_autostop(char *what); 298 299 /* resource.c */ 300 301 extern void ft_ckspace(void); 302 303 /* runcoms.c */ 304 305 extern int ft_dorun(char *file); 306 307 extern bool ft_getOutReq(FILE **, struct plot **, bool *, char *, char *); 308 309 /* spice.c & nutmeg.c */ 310 311 extern const bool ft_nutmeg; 312 extern IFsimulator *ft_sim; 313 extern char *ft_rawfile; 314 extern int main(int argc, char **argv); 315 316 /* spiceif.c & nutmegif.c */ 317 318 extern bool if_tranparams(struct circ *ci, double *start, double *stop, double *step); 319 extern char *if_errstring(int code); 320 extern int if_sens_run(CKTcircuit *t, wordlist *args, INPtables *tab); 321 extern struct variable *(*if_getparam)(CKTcircuit *ckt, char **name, char *param, int ind, int do_model); 322 extern struct variable *nutif_getparam(CKTcircuit *ckt, char **name, char *param, int ind, int do_model); 323 extern struct variable *spif_getparam(CKTcircuit *ckt, char **name, char *param, int ind, int do_model); 324 extern struct variable *spif_getparam_special(CKTcircuit *ckt, char **name, char *param, int ind, int do_model); 325 extern void if_setndnames(char *line); 326 extern void if_setparam_model(CKTcircuit *ckt, char **name, char *val ); 327 extern void if_setparam(CKTcircuit *ckt, char **name, char *param, struct dvec *val, int do_model); 328 extern struct variable *if_getstat(CKTcircuit *ckt, char *name); 329 extern int ft_find_analysis(char *name); 330 extern IFparm *ft_find_analysis_parm(int which, char *name); 331 332 /* typesdef.c */ 333 334 extern char *ft_typabbrev(int); 335 extern char *ft_typenames(int); 336 extern char *ft_plotabbrev(char *); 337 extern int ft_typnum(char *); 338 339 /* vectors.c */ 340 341 extern bool vec_iszero(const struct dvec *v); 342 extern bool vec_eq(struct dvec *v1, struct dvec *v2); 343 extern int plot_num; 344 extern struct dvec *vec_fromplot(char *word, struct plot *plot); 345 extern struct dvec *vec_copy(struct dvec *v); 346 extern struct dvec *vec_get(const char *word); 347 extern struct dvec *vec_mkfamily(struct dvec *v); 348 extern struct plot *plot_cur; 349 extern struct plot *plot_alloc(char *name); 350 extern struct plot *plot_list; 351 extern int plotl_changed; 352 extern void plot_add(struct plot *pl); 353 #define vec_free(ptr) \ 354 do { \ 355 vec_free_x(ptr); \ 356 ptr = NULL; \ 357 } while(0) 358 extern void vec_free_x(struct dvec *v); 359 extern void vec_gc(void); 360 extern void ft_loadfile(char *file); 361 extern void vec_new(struct dvec *d); 362 extern void plot_docoms(wordlist *wl); 363 extern void vec_remove(const char *name); 364 extern void plot_setcur(const char *name); 365 extern struct plot *get_plot(const char *name); 366 extern void plot_new(struct plot *pl); 367 extern char *vec_basename(struct dvec *v); 368 extern void vec_transpose(struct dvec *v); 369 extern struct dvec* copycut(struct dvec* ov, struct dvec* newscalevec, int istart, int istop); 370 371 /* main.c */ 372 extern bool ft_intrpt; 373 extern bool ft_setflag; 374 375 /* error.c */ 376 377 #endif 378