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 2.5 by gregl, Tue Aug 26 17:15:10 1997 UTC vs.
Revision 2.6 by greg, Sat Feb 22 02:07:21 2003 UTC

# Line 1 | Line 1
1 < /* Copyright (c) 1992 Regents of the University of California */
2 <
3 < /* SCCSid "$SunId$ LBL" */
4 <
1 > /* RCSid: $Id$ */
2   /*
3   *  calcomp.h - header file for expression parser.
4 + */
5 +
6 + /* ====================================================================
7 + * The Radiance Software License, Version 1.0
8   *
9 + * Copyright (c) 1990 - 2002 The Regents of the University of California,
10 + * through Lawrence Berkeley National Laboratory.   All rights reserved.
11 + *
12 + * Redistribution and use in source and binary forms, with or without
13 + * modification, are permitted provided that the following conditions
14 + * are met:
15 + *
16 + * 1. Redistributions of source code must retain the above copyright
17 + *         notice, this list of conditions and the following disclaimer.
18 + *
19 + * 2. Redistributions in binary form must reproduce the above copyright
20 + *       notice, this list of conditions and the following disclaimer in
21 + *       the documentation and/or other materials provided with the
22 + *       distribution.
23 + *
24 + * 3. The end-user documentation included with the redistribution,
25 + *           if any, must include the following acknowledgment:
26 + *             "This product includes Radiance software
27 + *                 (http://radsite.lbl.gov/)
28 + *                 developed by the Lawrence Berkeley National Laboratory
29 + *               (http://www.lbl.gov/)."
30 + *       Alternately, this acknowledgment may appear in the software itself,
31 + *       if and wherever such third-party acknowledgments normally appear.
32 + *
33 + * 4. The names "Radiance," "Lawrence Berkeley National Laboratory"
34 + *       and "The Regents of the University of California" must
35 + *       not be used to endorse or promote products derived from this
36 + *       software without prior written permission. For written
37 + *       permission, please contact [email protected].
38 + *
39 + * 5. Products derived from this software may not be called "Radiance",
40 + *       nor may "Radiance" appear in their name, without prior written
41 + *       permission of Lawrence Berkeley National Laboratory.
42 + *
43 + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
44 + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
45 + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
46 + * DISCLAIMED.   IN NO EVENT SHALL Lawrence Berkeley National Laboratory OR
47 + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
48 + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
49 + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
50 + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
51 + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
52 + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
53 + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
54 + * SUCH DAMAGE.
55 + * ====================================================================
56 + *
57 + * This software consists of voluntary contributions made by many
58 + * individuals on behalf of Lawrence Berkeley National Laboratory.   For more
59 + * information on Lawrence Berkeley National Laboratory, please see
60 + * <http://www.lbl.gov/>.
61   */
62                                  /* EPNODE types */
63   #define  VAR            1
# Line 51 | Line 104 | typedef struct vardef  VARDEF; /* a variable definitio
104   #define  isid(c)        (isalnum(c) || (c) == '_' || \
105                          (c) == '.' || (c) == CNTXMARK)
106  
107 < extern double  eval(), varvalue(), chanvalue(), funvalue();
108 < extern double  argument(), getnum();
107 > #define  evalue(ep)     (*eoper[(ep)->type])(ep)
108 >
109 >                                        /* flags to set in esupport */
110 > #define  E_VARIABLE     001
111 > #define  E_FUNCTION     002
112 > #define  E_INCHAN       004
113 > #define  E_OUTCHAN      010
114 > #define  E_RCONST       020
115 > #define  E_REDEFW       040
116 >
117   extern double  (*eoper[])();
57 extern int  getinum();
58 extern char  *getname(), *qualname(), *argfun();
59 extern char  *setcontext(), *pushcontext(), *popcontext();
60 extern EPNODE  *eparse(), *ekid(), *dlookup(), *dpop(), *dfirst(), *dnext();
61 extern EPNODE  *getdefn(), *getchan();
62 extern EPNODE  *getE1(), *getE2(), *getE3(), *getE4(), *getE5(), *rconst();
63 extern VARDEF  *varinsert(), *varlookup(), *argf();
64 extern LIBR  *liblookup();
118   extern unsigned long  eclock;
119 + extern unsigned int  esupport;
120 + extern EPNODE   *curfunc;
121   extern int  nextc;
122  
123 < #define  evalue(ep)     (*eoper[(ep)->type])(ep)
123 > #ifdef NOPROTO
124 >
125 > extern void     fcompile();
126 > extern void     scompile();
127 > extern double   varvalue();
128 > extern double   evariable();
129 > extern void     varset();
130 > extern void     dclear();
131 > extern void     dremove();
132 > extern int      vardefined();
133 > extern char     *setcontext();
134 > extern char     *pushcontext();
135 > extern char     *popcontext();
136 > extern char     *qualname();
137 > extern int      incontext();
138 > extern void     chanout();
139 > extern void     dcleanup();
140 > extern EPNODE   *dlookup();
141 > extern VARDEF   *varlookup();
142 > extern VARDEF   *varinsert();
143 > extern void     varfree();
144 > extern EPNODE   *dfirst();
145 > extern EPNODE   *dnext();
146 > extern EPNODE   *dpop();
147 > extern void     dpush();
148 > extern void     addchan();
149 > extern void     getstatement();
150 > extern EPNODE   *getdefn();
151 > extern EPNODE   *getchan();
152 > extern EPNODE   *eparse();
153 > extern double   eval();
154 > extern int      epcmp();
155 > extern void     epfree();
156 > extern EPNODE   *ekid();
157 > extern int      nekids();
158 > extern void     initfile();
159 > extern void     initstr();
160 > extern void     getscanpos();
161 > extern int      scan();
162 > extern char     *long2ascii();
163 > extern void     syntax();
164 > extern void     addekid();
165 > extern char     *getname();
166 > extern int      getinum();
167 > extern double   getnum();
168 > extern EPNODE   *getE1();
169 > extern EPNODE   *getE2();
170 > extern EPNODE   *getE3();
171 > extern EPNODE   *getE4();
172 > extern EPNODE   *getE5();
173 > extern EPNODE   *rconst();
174 > extern int      isconstvar();
175 > extern int      isconstfun();
176 > extern int      fundefined();
177 > extern double   funvalue();
178 > extern void     funset();
179 > extern int      nargum();
180 > extern double   argument();
181 > extern VARDEF   *argf();
182 > extern char     *argfun();
183 > extern double   efunc();
184 > extern LIBR     *liblookup();
185 > extern void     libupdate();
186 > extern void     eprint();
187 > extern void     dprint();
188 > extern char     *savestr();
189 > extern void     freestr();
190 > extern int      shash();
191 > extern char     *emalloc();
192 > extern char     *ecalloc();
193 > extern char     *erealloc();
194 > extern void     efree();
195 > extern void     eputs();
196 > extern void     wputs();
197 > extern void     quit();
198 >
199 > extern double   chanvalue();
200 >
201 > #else
202 >                                        /* defined in caldefn.c */
203 > extern void     fcompile(char *fname);
204 > extern void     scompile(char *str, char *fname, int ln);
205 > extern double   varvalue(char *vname);
206 > extern double   evariable(EPNODE *ep);
207 > extern void     varset(char *fname, int assign, double val);
208 > extern void     dclear(char *name);
209 > extern void     dremove(char *name);
210 > extern int      vardefined(char *name);
211 > extern char     *setcontext(char *ctx);
212 > extern char     *pushcontext(char *ctx);
213 > extern char     *popcontext(void);
214 > extern char     *qualname(char *nam, int lvl);
215 > extern int      incontext(char *qn);
216 > extern void     chanout(int (*cs)());
217 > extern void     dcleanup(int lvl);
218 > extern EPNODE   *dlookup(char *name);
219 > extern VARDEF   *varlookup(char *name);
220 > extern VARDEF   *varinsert(char *name);
221 > extern void     varfree(VARDEF *ln);
222 > extern EPNODE   *dfirst(void);
223 > extern EPNODE   *dnext(void);
224 > extern EPNODE   *dpop(char *name);
225 > extern void     dpush(char *nm, EPNODE *ep);
226 > extern void     addchan(EPNODE *sp);
227 > extern void     getstatement();
228 > extern EPNODE   *getdefn();
229 > extern EPNODE   *getchan();
230 >                                        /* defined in calexpr.c */
231 > extern EPNODE   *eparse(char *expr);
232 > extern double   eval(char *expr);
233 > extern int      epcmp(EPNODE *ep1, EPNODE *ep2);
234 > extern void     epfree(EPNODE *epar);
235 > extern EPNODE   *ekid(EPNODE *ep, int n);
236 > extern int      nekids(EPNODE *ep);
237 > extern void     initfile(FILE *fp, char *fn, int ln);
238 > extern void     initstr(char *s, char *fn, int ln);
239 > extern void     getscanpos(char **fnp, int *lnp, char **spp, FILE **fpp);
240 > extern int      scan(void);
241 > extern char     *long2ascii(long l);
242 > extern void     syntax(char *err);
243 > extern void     addekid(EPNODE *ep, EPNODE *ekid);
244 > extern char     *getname(void);
245 > extern int      getinum(void);
246 > extern double   getnum(void);
247 > extern EPNODE   *getE1(void);
248 > extern EPNODE   *getE2(void);
249 > extern EPNODE   *getE3(void);
250 > extern EPNODE   *getE4(void);
251 > extern EPNODE   *getE5(void);
252 > extern EPNODE   *rconst(EPNODE *epar);
253 > extern int      isconstvar(EPNODE *ep);
254 > extern int      isconstfun(EPNODE *ep);
255 >                                        /* defined in calfunc.c */
256 > extern int      fundefined(char *fname);
257 > extern double   funvalue(char *fname, int n, double *a);
258 > extern void     funset(char *fname, int nargs, int assign, double (*fptr)());
259 > extern int      nargum(void);
260 > extern double   argument(int n);
261 > extern VARDEF   *argf(int n);
262 > extern char     *argfun(int n);
263 > extern double   efunc(EPNODE *ep);
264 > extern LIBR     *liblookup(char *fname);
265 > extern void     libupdate(char *fn);
266 >                                        /* defined in calprnt.c */
267 > extern void     eprint(EPNODE *ep, FILE *fp);
268 > extern void     dprint(char *name, FILE *fp);
269 >                                        /* defined in savestr.c */
270 > extern char     *savestr(char *str);
271 > extern void     freestr(char *s);
272 > extern int      shash(char *s);
273 >                                        /* defined in ealloc.c */
274 > extern char     *emalloc(unsigned int n);
275 > extern char     *ecalloc(unsigned int ne, unsigned int es);
276 > extern char     *erealloc(char *cp, unsigned int n);
277 > extern void     efree(char *cp);
278 >                                        /* miscellaneous */
279 > extern void     eputs(char *s);
280 > extern void     wputs(char *s);
281 > extern void     quit(int code);
282 >                                        /* defined by client */
283 > extern double   chanvalue(int n);
284 >
285 > #endif

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines