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.6 by greg, Sat Feb 22 02:07:21 2003 UTC vs.
Revision 2.16 by greg, Mon Aug 4 22:37:53 2003 UTC

# Line 1 | Line 1
1 < /* RCSid: $Id$ */
1 > /* RCSid $Id$ */
2   /*
3   *  calcomp.h - header file for expression parser.
4   */
5 + #ifndef _RAD_CALCOMP_H_
6 + #define _RAD_CALCOMP_H_
7  
8 < /* ====================================================================
9 < * The Radiance Software License, Version 1.0
10 < *
11 < * Copyright (c) 1990 - 2002 The Regents of the University of California,
12 < * through Lawrence Berkeley National Laboratory.   All rights reserved.
13 < *
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 */
8 > #include <stdio.h>
9 >
10 > #ifdef __cplusplus
11 > extern "C" {
12 > #endif
13 >
14   #define  VAR            1
15   #define  NUM            2
16   #define  UMINUS         3
# Line 74 | Line 25 | typedef struct {
25      char  *fname;               /* function name */
26      short  nargs;               /* # of required arguments */
27      short  atyp;                /* assignment type (':' or '=') */
28 <    double  (*f)();             /* pointer to function */
28 >    double  (*f)(char *);       /* pointer to function */
29   }  LIBR;                /* a library function */
30  
31   typedef struct epnode {
# Line 98 | Line 49 | typedef struct epnode {
49  
50   typedef struct vardef  VARDEF;  /* a variable definition */
51  
52 < #define  MAXWORD        127             /* maximum word/id length */
52 > #define  RMAXWORD       127             /* maximum word/id length */
53   #define  CNTXMARK       '`'             /* context mark */
54  
55   #define  isid(c)        (isalnum(c) || (c) == '_' || \
# Line 114 | Line 65 | typedef struct vardef  VARDEF; /* a variable definitio
65   #define  E_RCONST       020
66   #define  E_REDEFW       040
67  
68 < extern double  (*eoper[])();
68 > extern double  (*eoper[])(EPNODE *);
69   extern unsigned long  eclock;
70   extern unsigned int  esupport;
71   extern EPNODE   *curfunc;
72   extern int  nextc;
73  
74 < #ifdef NOPROTO
74 >                                        /* defined in biggerlib.c */
75 > extern void biggerlib(void);
76  
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
77                                          /* defined in caldefn.c */
78   extern void     fcompile(char *fname);
79   extern void     scompile(char *str, char *fname, int ln);
# Line 213 | Line 88 | extern char    *pushcontext(char *ctx);
88   extern char     *popcontext(void);
89   extern char     *qualname(char *nam, int lvl);
90   extern int      incontext(char *qn);
91 < extern void     chanout(int (*cs)());
91 > extern void     chanout(void (*cs)(int n, double v));
92   extern void     dcleanup(int lvl);
93   extern EPNODE   *dlookup(char *name);
94   extern VARDEF   *varlookup(char *name);
# Line 224 | Line 99 | extern EPNODE  *dnext(void);
99   extern EPNODE   *dpop(char *name);
100   extern void     dpush(char *nm, EPNODE *ep);
101   extern void     addchan(EPNODE *sp);
102 < extern void     getstatement();
103 < extern EPNODE   *getdefn();
104 < extern EPNODE   *getchan();
102 > extern void     getstatement(void);
103 > extern EPNODE   *getdefn(void);
104 > extern EPNODE   *getchan(void);
105                                          /* defined in calexpr.c */
106   extern EPNODE   *eparse(char *expr);
107   extern double   eval(char *expr);
# Line 255 | Line 130 | extern int     isconstfun(EPNODE *ep);
130                                          /* defined in calfunc.c */
131   extern int      fundefined(char *fname);
132   extern double   funvalue(char *fname, int n, double *a);
133 < extern void     funset(char *fname, int nargs, int assign, double (*fptr)());
133 > extern void     funset(char *fname, int nargs, int assign,
134 >                                double (*fptr)(char *));
135   extern int      nargum(void);
136   extern double   argument(int n);
137   extern VARDEF   *argf(int n);
# Line 275 | Line 151 | extern char    *emalloc(unsigned int n);
151   extern char     *ecalloc(unsigned int ne, unsigned int es);
152   extern char     *erealloc(char *cp, unsigned int n);
153   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);
154                                          /* defined by client */
155   extern double   chanvalue(int n);
156  
157 +
158 + #ifdef __cplusplus
159 + }
160   #endif
161 + #endif /* _RAD_CALCOMP_H_ */
162 +

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines