--- ray/src/common/calcomp.h 2003/02/22 02:07:21 2.6
+++ ray/src/common/calcomp.h 2005/05/17 17:51:51 2.19
@@ -1,65 +1,16 @@
-/* RCSid: $Id: calcomp.h,v 2.6 2003/02/22 02:07:21 greg Exp $ */
+/* RCSid $Id: calcomp.h,v 2.19 2005/05/17 17:51:51 greg Exp $ */
/*
* calcomp.h - header file for expression parser.
*/
+#ifndef _RAD_CALCOMP_H_
+#define _RAD_CALCOMP_H_
-/* ====================================================================
- * The Radiance Software License, Version 1.0
- *
- * Copyright (c) 1990 - 2002 The Regents of the University of California,
- * through Lawrence Berkeley National Laboratory. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * 3. The end-user documentation included with the redistribution,
- * if any, must include the following acknowledgment:
- * "This product includes Radiance software
- * (http://radsite.lbl.gov/)
- * developed by the Lawrence Berkeley National Laboratory
- * (http://www.lbl.gov/)."
- * Alternately, this acknowledgment may appear in the software itself,
- * if and wherever such third-party acknowledgments normally appear.
- *
- * 4. The names "Radiance," "Lawrence Berkeley National Laboratory"
- * and "The Regents of the University of California" must
- * not be used to endorse or promote products derived from this
- * software without prior written permission. For written
- * permission, please contact radiance@radsite.lbl.gov.
- *
- * 5. Products derived from this software may not be called "Radiance",
- * nor may "Radiance" appear in their name, without prior written
- * permission of Lawrence Berkeley National Laboratory.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL Lawrence Berkeley National Laboratory OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of Lawrence Berkeley National Laboratory. For more
- * information on Lawrence Berkeley National Laboratory, please see
- * .
- */
- /* EPNODE types */
+#include
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
#define VAR 1
#define NUM 2
#define UMINUS 3
@@ -74,7 +25,7 @@ typedef struct {
char *fname; /* function name */
short nargs; /* # of required arguments */
short atyp; /* assignment type (':' or '=') */
- double (*f)(); /* pointer to function */
+ double (*f)(char *); /* pointer to function */
} LIBR; /* a library function */
typedef struct epnode {
@@ -98,7 +49,7 @@ typedef struct epnode {
typedef struct vardef VARDEF; /* a variable definition */
-#define MAXWORD 127 /* maximum word/id length */
+#define RMAXWORD 127 /* maximum word/id length */
#define CNTXMARK '`' /* context mark */
#define isid(c) (isalnum(c) || (c) == '_' || \
@@ -114,91 +65,16 @@ typedef struct vardef VARDEF; /* a variable definitio
#define E_RCONST 020
#define E_REDEFW 040
-extern double (*eoper[])();
+extern double (*eoper[])(EPNODE *);
extern unsigned long eclock;
extern unsigned int esupport;
extern EPNODE *curfunc;
extern int nextc;
+extern int eofc;
-#ifdef NOPROTO
+ /* defined in biggerlib.c */
+extern void biggerlib(void);
-extern void fcompile();
-extern void scompile();
-extern double varvalue();
-extern double evariable();
-extern void varset();
-extern void dclear();
-extern void dremove();
-extern int vardefined();
-extern char *setcontext();
-extern char *pushcontext();
-extern char *popcontext();
-extern char *qualname();
-extern int incontext();
-extern void chanout();
-extern void dcleanup();
-extern EPNODE *dlookup();
-extern VARDEF *varlookup();
-extern VARDEF *varinsert();
-extern void varfree();
-extern EPNODE *dfirst();
-extern EPNODE *dnext();
-extern EPNODE *dpop();
-extern void dpush();
-extern void addchan();
-extern void getstatement();
-extern EPNODE *getdefn();
-extern EPNODE *getchan();
-extern EPNODE *eparse();
-extern double eval();
-extern int epcmp();
-extern void epfree();
-extern EPNODE *ekid();
-extern int nekids();
-extern void initfile();
-extern void initstr();
-extern void getscanpos();
-extern int scan();
-extern char *long2ascii();
-extern void syntax();
-extern void addekid();
-extern char *getname();
-extern int getinum();
-extern double getnum();
-extern EPNODE *getE1();
-extern EPNODE *getE2();
-extern EPNODE *getE3();
-extern EPNODE *getE4();
-extern EPNODE *getE5();
-extern EPNODE *rconst();
-extern int isconstvar();
-extern int isconstfun();
-extern int fundefined();
-extern double funvalue();
-extern void funset();
-extern int nargum();
-extern double argument();
-extern VARDEF *argf();
-extern char *argfun();
-extern double efunc();
-extern LIBR *liblookup();
-extern void libupdate();
-extern void eprint();
-extern void dprint();
-extern char *savestr();
-extern void freestr();
-extern int shash();
-extern char *emalloc();
-extern char *ecalloc();
-extern char *erealloc();
-extern void efree();
-extern void eputs();
-extern void wputs();
-extern void quit();
-
-extern double chanvalue();
-
-#else
/* defined in caldefn.c */
extern void fcompile(char *fname);
extern void scompile(char *str, char *fname, int ln);
@@ -213,7 +89,7 @@ extern char *pushcontext(char *ctx);
extern char *popcontext(void);
extern char *qualname(char *nam, int lvl);
extern int incontext(char *qn);
-extern void chanout(int (*cs)());
+extern void chanout(void (*cs)(int n, double v));
extern void dcleanup(int lvl);
extern EPNODE *dlookup(char *name);
extern VARDEF *varlookup(char *name);
@@ -224,9 +100,9 @@ extern EPNODE *dnext(void);
extern EPNODE *dpop(char *name);
extern void dpush(char *nm, EPNODE *ep);
extern void addchan(EPNODE *sp);
-extern void getstatement();
-extern EPNODE *getdefn();
-extern EPNODE *getchan();
+extern void getstatement(void);
+extern EPNODE *getdefn(void);
+extern EPNODE *getchan(void);
/* defined in calexpr.c */
extern EPNODE *eparse(char *expr);
extern double eval(char *expr);
@@ -255,7 +131,8 @@ extern int isconstfun(EPNODE *ep);
/* defined in calfunc.c */
extern int fundefined(char *fname);
extern double funvalue(char *fname, int n, double *a);
-extern void funset(char *fname, int nargs, int assign, double (*fptr)());
+extern void funset(char *fname, int nargs, int assign,
+ double (*fptr)(char *));
extern int nargum(void);
extern double argument(int n);
extern VARDEF *argf(int n);
@@ -266,20 +143,12 @@ extern void libupdate(char *fn);
/* defined in calprnt.c */
extern void eprint(EPNODE *ep, FILE *fp);
extern void dprint(char *name, FILE *fp);
- /* defined in savestr.c */
-extern char *savestr(char *str);
-extern void freestr(char *s);
-extern int shash(char *s);
- /* defined in ealloc.c */
-extern char *emalloc(unsigned int n);
-extern char *ecalloc(unsigned int ne, unsigned int es);
-extern char *erealloc(char *cp, unsigned int n);
-extern void efree(char *cp);
- /* miscellaneous */
-extern void eputs(char *s);
-extern void wputs(char *s);
-extern void quit(int code);
/* defined by client */
extern double chanvalue(int n);
+
+#ifdef __cplusplus
+}
#endif
+#endif /* _RAD_CALCOMP_H_ */
+