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