ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/common/calcomp.h
Revision: 2.1
Committed: Tue Nov 12 16:55:05 1991 UTC (32 years, 5 months ago) by greg
Content type: text/plain
Branch: MAIN
Changes since 1.7: +0 -0 lines
Log Message:
updated revision number for release 2.0

File Contents

# User Rev Content
1 greg 1.1 /* Copyright (c) 1986 Regents of the University of California */
2    
3     /* SCCSid "$SunId$ LBL" */
4    
5     /*
6     * calcomp.h - header file for expression parser.
7     *
8     */
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 greg 1.4 /* also: '+', '-', '*', '/', '^', '=', ':' */
19 greg 1.1
20     typedef struct {
21     char *fname; /* function name */
22 greg 1.5 short nargs; /* # of required arguments */
23     short atyp; /* assignment type (':' or '=') */
24 greg 1.1 double (*f)(); /* pointer to function */
25     } LIBR; /* a library function */
26    
27     typedef struct epnode {
28     int type; /* node type */
29     struct epnode *sibling; /* next child this level */
30     union {
31     struct epnode *kid; /* first child */
32     double num; /* number */
33     char *name; /* symbol name */
34     int chan; /* channel number */
35     long tick; /* timestamp */
36     struct vardef {
37     char *name; /* variable name */
38     int nlinks; /* number of references */
39     struct epnode *def; /* definition */
40     LIBR *lib; /* library definition */
41     struct vardef *next; /* next in hash list */
42     } *ln; /* link */
43     } v; /* value */
44     } EPNODE; /* an expression node */
45    
46     typedef struct vardef VARDEF; /* a variable definition */
47    
48 greg 1.7 #define MAXWORD 63 /* maximum word/id length */
49 greg 1.6 #define CNTXMARK '`' /* context mark */
50    
51     #define isid(c) (isalnum(c) || (c) == '_' || \
52     (c) == '.' || (c) == CNTXMARK)
53    
54 greg 1.1 extern double eval(), varvalue(), chanvalue(), funvalue();
55     extern double argument(), getnum();
56     extern double (*eoper[])();
57     extern int getinum();
58 greg 1.6 extern char *getname(), *qualname(), *setcontext(), *argfun();
59 greg 1.1 extern EPNODE *eparse(), *ekid(), *dlookup(), *dpop(), *dfirst(), *dnext();
60     extern EPNODE *getdefn(), *getchan();
61     extern EPNODE *getE1(), *getE2(), *getE3(), *getE4(), *getE5(), *rconst();
62     extern VARDEF *varinsert(), *varlookup(), *argf();
63     extern LIBR *liblookup();
64     extern long eclock;
65     extern int nextc;
66     extern int errno;
67    
68     #define evalue(ep) (*eoper[(ep)->type])(ep)