ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/common/calcomp.h
(Generate patch)

Comparing ray/src/common/calcomp.h (file contents):
Revision 1.1 by greg, Thu Feb 2 10:34:13 1989 UTC vs.
Revision 2.7 by greg, Tue Feb 25 02:47:21 2003 UTC

# Line 1 | Line 1
1 < /* Copyright (c) 1986 Regents of the University of California */
2 <
3 < /* SCCSid "$SunId$ LBL" */
4 <
1 > /* RCSid $Id$ */
2   /*
3   *  calcomp.h - header file for expression parser.
7 *
4   */
9                                /* EPNODE types */
10 #define  VAR            1
11 #define  NUM            2
12 #define  UMINUS         3
13 #define  CHAN           4
14 #define  FUNC           5
15 #define  ARG            6
16 #define  TICK           7
17 #define  SYM            8
18                                /* also: '+', '-', '*', '/', '^', '=' */
5  
6 + #include "copyright.h"
7 +
8 + #define  VAR            1
9 + #define  NUM            2
10 + #define  UMINUS         3
11 + #define  CHAN           4
12 + #define  FUNC           5
13 + #define  ARG            6
14 + #define  TICK           7
15 + #define  SYM            8
16 +                                /* also: '+', '-', '*', '/', '^', '=', ':' */
17 +
18   typedef struct {
19      char  *fname;               /* function name */
20 <    int  nargs;                 /* # of required arguments */
20 >    short  nargs;               /* # of required arguments */
21 >    short  atyp;                /* assignment type (':' or '=') */
22      double  (*f)();             /* pointer to function */
23   }  LIBR;                /* a library function */
24  
25   typedef struct epnode {
26 <    int  type;                  /* node type */
26 >    int  type;                  /* node type */
27      struct epnode  *sibling;    /* next child this level */
28      union {
29          struct epnode  *kid;    /* first child */
30 <        double  num;            /* number */
30 >        double  num;            /* number */
31          char  *name;            /* symbol name */
32          int  chan;              /* channel number */
33 <        long  tick;             /* timestamp */
33 >        unsigned long  tick;    /* timestamp */
34          struct vardef {
35              char  *name;                /* variable name */
36 <            int  nlinks;                /* number of references */
36 >            int  nlinks;                /* number of references */
37              struct epnode  *def;        /* definition */
38              LIBR  *lib;                 /* library definition */
39              struct vardef  *next;       /* next in hash list */
# Line 44 | Line 43 | typedef struct epnode {
43  
44   typedef struct vardef  VARDEF;  /* a variable definition */
45  
46 < extern double  eval(), varvalue(), chanvalue(), funvalue();
47 < extern double  argument(), getnum();
46 > #define  MAXWORD        127             /* maximum word/id length */
47 > #define  CNTXMARK       '`'             /* context mark */
48 >
49 > #define  isid(c)        (isalnum(c) || (c) == '_' || \
50 >                        (c) == '.' || (c) == CNTXMARK)
51 >
52 > #define  evalue(ep)     (*eoper[(ep)->type])(ep)
53 >
54 >                                        /* flags to set in esupport */
55 > #define  E_VARIABLE     001
56 > #define  E_FUNCTION     002
57 > #define  E_INCHAN       004
58 > #define  E_OUTCHAN      010
59 > #define  E_RCONST       020
60 > #define  E_REDEFW       040
61 >
62   extern double  (*eoper[])();
63 < extern int  getinum();
64 < extern char  *getname(), *argfun();
65 < extern EPNODE  *eparse(), *ekid(), *dlookup(), *dpop(), *dfirst(), *dnext();
53 < extern EPNODE  *getdefn(), *getchan();
54 < extern EPNODE  *getE1(), *getE2(), *getE3(), *getE4(), *getE5(), *rconst();
55 < extern VARDEF  *varinsert(), *varlookup(), *argf();
56 < extern LIBR  *liblookup();
57 < extern long  eclock;
63 > extern unsigned long  eclock;
64 > extern unsigned int  esupport;
65 > extern EPNODE   *curfunc;
66   extern int  nextc;
59 extern int  errno;
67  
68 < #define  evalue(ep)     (*eoper[(ep)->type])(ep)
68 > #ifdef NOPROTO
69 >
70 > extern void     fcompile();
71 > extern void     scompile();
72 > extern double   varvalue();
73 > extern double   evariable();
74 > extern void     varset();
75 > extern void     dclear();
76 > extern void     dremove();
77 > extern int      vardefined();
78 > extern char     *setcontext();
79 > extern char     *pushcontext();
80 > extern char     *popcontext();
81 > extern char     *qualname();
82 > extern int      incontext();
83 > extern void     chanout();
84 > extern void     dcleanup();
85 > extern EPNODE   *dlookup();
86 > extern VARDEF   *varlookup();
87 > extern VARDEF   *varinsert();
88 > extern void     varfree();
89 > extern EPNODE   *dfirst();
90 > extern EPNODE   *dnext();
91 > extern EPNODE   *dpop();
92 > extern void     dpush();
93 > extern void     addchan();
94 > extern void     getstatement();
95 > extern EPNODE   *getdefn();
96 > extern EPNODE   *getchan();
97 > extern EPNODE   *eparse();
98 > extern double   eval();
99 > extern int      epcmp();
100 > extern void     epfree();
101 > extern EPNODE   *ekid();
102 > extern int      nekids();
103 > extern void     initfile();
104 > extern void     initstr();
105 > extern void     getscanpos();
106 > extern int      scan();
107 > extern char     *long2ascii();
108 > extern void     syntax();
109 > extern void     addekid();
110 > extern char     *getname();
111 > extern int      getinum();
112 > extern double   getnum();
113 > extern EPNODE   *getE1();
114 > extern EPNODE   *getE2();
115 > extern EPNODE   *getE3();
116 > extern EPNODE   *getE4();
117 > extern EPNODE   *getE5();
118 > extern EPNODE   *rconst();
119 > extern int      isconstvar();
120 > extern int      isconstfun();
121 > extern int      fundefined();
122 > extern double   funvalue();
123 > extern void     funset();
124 > extern int      nargum();
125 > extern double   argument();
126 > extern VARDEF   *argf();
127 > extern char     *argfun();
128 > extern double   efunc();
129 > extern LIBR     *liblookup();
130 > extern void     libupdate();
131 > extern void     eprint();
132 > extern void     dprint();
133 > extern char     *savestr();
134 > extern void     freestr();
135 > extern int      shash();
136 > extern char     *emalloc();
137 > extern char     *ecalloc();
138 > extern char     *erealloc();
139 > extern void     efree();
140 > extern void     eputs();
141 > extern void     wputs();
142 > extern void     quit();
143 >
144 > extern double   chanvalue();
145 >
146 > #else
147 >                                        /* defined in caldefn.c */
148 > extern void     fcompile(char *fname);
149 > extern void     scompile(char *str, char *fname, int ln);
150 > extern double   varvalue(char *vname);
151 > extern double   evariable(EPNODE *ep);
152 > extern void     varset(char *fname, int assign, double val);
153 > extern void     dclear(char *name);
154 > extern void     dremove(char *name);
155 > extern int      vardefined(char *name);
156 > extern char     *setcontext(char *ctx);
157 > extern char     *pushcontext(char *ctx);
158 > extern char     *popcontext(void);
159 > extern char     *qualname(char *nam, int lvl);
160 > extern int      incontext(char *qn);
161 > extern void     chanout(int (*cs)());
162 > extern void     dcleanup(int lvl);
163 > extern EPNODE   *dlookup(char *name);
164 > extern VARDEF   *varlookup(char *name);
165 > extern VARDEF   *varinsert(char *name);
166 > extern void     varfree(VARDEF *ln);
167 > extern EPNODE   *dfirst(void);
168 > extern EPNODE   *dnext(void);
169 > extern EPNODE   *dpop(char *name);
170 > extern void     dpush(char *nm, EPNODE *ep);
171 > extern void     addchan(EPNODE *sp);
172 > extern void     getstatement();
173 > extern EPNODE   *getdefn();
174 > extern EPNODE   *getchan();
175 >                                        /* defined in calexpr.c */
176 > extern EPNODE   *eparse(char *expr);
177 > extern double   eval(char *expr);
178 > extern int      epcmp(EPNODE *ep1, EPNODE *ep2);
179 > extern void     epfree(EPNODE *epar);
180 > extern EPNODE   *ekid(EPNODE *ep, int n);
181 > extern int      nekids(EPNODE *ep);
182 > extern void     initfile(FILE *fp, char *fn, int ln);
183 > extern void     initstr(char *s, char *fn, int ln);
184 > extern void     getscanpos(char **fnp, int *lnp, char **spp, FILE **fpp);
185 > extern int      scan(void);
186 > extern char     *long2ascii(long l);
187 > extern void     syntax(char *err);
188 > extern void     addekid(EPNODE *ep, EPNODE *ekid);
189 > extern char     *getname(void);
190 > extern int      getinum(void);
191 > extern double   getnum(void);
192 > extern EPNODE   *getE1(void);
193 > extern EPNODE   *getE2(void);
194 > extern EPNODE   *getE3(void);
195 > extern EPNODE   *getE4(void);
196 > extern EPNODE   *getE5(void);
197 > extern EPNODE   *rconst(EPNODE *epar);
198 > extern int      isconstvar(EPNODE *ep);
199 > extern int      isconstfun(EPNODE *ep);
200 >                                        /* defined in calfunc.c */
201 > extern int      fundefined(char *fname);
202 > extern double   funvalue(char *fname, int n, double *a);
203 > extern void     funset(char *fname, int nargs, int assign, double (*fptr)());
204 > extern int      nargum(void);
205 > extern double   argument(int n);
206 > extern VARDEF   *argf(int n);
207 > extern char     *argfun(int n);
208 > extern double   efunc(EPNODE *ep);
209 > extern LIBR     *liblookup(char *fname);
210 > extern void     libupdate(char *fn);
211 >                                        /* defined in calprnt.c */
212 > extern void     eprint(EPNODE *ep, FILE *fp);
213 > extern void     dprint(char *name, FILE *fp);
214 >                                        /* defined in savestr.c */
215 > extern char     *savestr(char *str);
216 > extern void     freestr(char *s);
217 > extern int      shash(char *s);
218 >                                        /* defined in ealloc.c */
219 > extern char     *emalloc(unsigned int n);
220 > extern char     *ecalloc(unsigned int ne, unsigned int es);
221 > extern char     *erealloc(char *cp, unsigned int n);
222 > extern void     efree(char *cp);
223 >                                        /* miscellaneous */
224 > extern void     eputs(char *s);
225 > extern void     wputs(char *s);
226 > extern void     quit(int code);
227 >                                        /* defined by client */
228 > extern double   chanvalue(int n);
229 >
230 > #endif

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines