1 /* 2 * Copyright (c) 1998-2000 Lucent Technologies. 3 * See README file for details. 4 * 5 * 6 * 7 * Structures, typedefs etc used in Locfit 8 */ 9 10 typedef char varname[64]; 11 12 /* 13 * Define the vari type for locfit variables and related macros. 14 * For the C version, an enhanced vari type is needed; 15 * for other versions a simple structure suffices. 16 */ 17 #ifdef CVERSION 18 19 typedef struct { 20 varname name; 21 INT n, bytes, mode, stat; 22 double *dpr; } vari; 23 #define checkvarlen(v,n,name,mode) (createvar(name,STSYSTEM,n,mode)) 24 #define vmode(v) ((v)->mode) 25 26 #else 27 28 typedef struct { 29 INT n; 30 double *dpr; 31 } vari; 32 #define viptr(v,i) (&(v)->dpr[i]) 33 #define checkvarlen(v,len,name,mode) \ 34 ((((v)!=NULL) && (vlength(v) >= (len))) ? (v) : createvar((name),0,(len),(mode))) 35 #endif 36 37 #define vlength(v) ((v)->n) 38 39 typedef struct { 40 char *arg, *val; 41 vari *result; 42 INT used; } carg; 43 44 typedef struct { 45 void (*AddColor)(), (*SetColor)(), (*ClearScreen)(), (*TextDim)(), (*DoText)(); 46 void (*DrawPoint)(), (*DrawLine)(), (*DrawPatch)(), (*wrapup)(); 47 INT (*makewin)(), ticklength, defth, deftw; 48 } device; 49 50 typedef struct { 51 vari *wk; 52 double *coef, *xbar, *f; 53 jacobian xtwx; } paramcomp; 54 55 typedef struct { 56 vari *tw, *L, *iw, *xxev; 57 double *x[MXDIM], *y, *w, *base, *c; 58 double *coef, *nlx, *t0, *lik, *h, *deg; 59 double *sv, dp[LEND], kap[3]; 60 double sca[MXDIM], fl[2*MXDIM], xl[2*MXDIM]; 61 INT *ce, *s, *lo, *hi, sty[MXDIM]; 62 INT *mg, nvm, ncm, vc; 63 INT nl, nv, nnl, nce, nk, nn, mi[LENM], ord, deriv[MXDEG+2], nd; 64 paramcomp pc; 65 varname yname, xname[MXDIM], wname, bname, cname; } lfit; 66 67 #define datum(lf,i,j) (lf)->x[i][j] 68 #define dvari(lf,i) (lf)->x[i] 69 #define evpt(lf,i) (&(lf)->xxev->dpr[(i)*(lf)->mi[MDIM]]) 70 #define evptx(lf,i,k) ((lf)->xxev->dpr[(i)*(lf)->mi[MDIM]+(k)]) 71 72 typedef struct { 73 vari *data[MXDIM], *fit, *se; 74 INT d, wh, gr; 75 } pplot; 76 77 typedef struct { 78 char cmd; 79 double x, *v, (*f)(); 80 INT m, nx[3]; 81 vari *vv; } arstruct; 82 83 typedef struct { 84 vari *x, *y, *z; 85 char type; 86 INT id, t, n, nx, ny, pch; } plxyz; 87 88 typedef struct { 89 double theta, phi, xl[2], yl[2], zl[2], sl[10]; 90 INT id, ty, nsl; 91 char main[50], xlab[50], ylab[50], zlab[50]; 92 vari *track, *xyzs; } plots; 93 94 #define PLNONE 0 95 #define PLDATA 1 96 #define PLFIT 2 97 #define PLTRK 4 98 99 struct lfcol { 100 char name[10]; 101 INT n, r, g, b; 102 }; 103