--- ray/src/common/object.h 2003/02/22 02:07:22 2.8
+++ ray/src/common/object.h 2014/05/11 21:37:40 2.22
@@ -1,64 +1,14 @@
-/* RCSid: $Id: object.h,v 2.8 2003/02/22 02:07:22 greg Exp $ */
+/* RCSid $Id: object.h,v 2.22 2014/05/11 21:37:40 greg Exp $ */
/*
* object.h - header file for routines using objects and object sets.
- */
-
-/* ====================================================================
- * 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
- * .
+ * Include after "standard.h"
*/
+#ifndef _RAD_OBJECT_H_
+#define _RAD_OBJECT_H_
+#ifdef __cplusplus
+extern "C" {
+#endif
#ifndef OCTREE
#define OCTREE int
@@ -72,17 +22,17 @@
*/
typedef struct {
+ char **sarg; /* string arguments */
+ RREAL *farg; /* real arguments */
short nsargs; /* # of string arguments */
short nfargs; /* # of real arguments */
- char **sarg; /* string arguments */
- FLOAT *farg; /* real arguments */
#ifdef IARGS
short niargs; /* # of integer arguments */
long *iarg; /* integer arguments */
#endif
} FUNARGS;
-#define MAXSTR 128 /* maximum string length */
+#define MAXSTR 512 /* maximum string (word) length */
/*
* An object is defined as an index into an array of
@@ -91,10 +41,10 @@ typedef struct {
*/
#ifndef OBJECT
-#ifdef BIGMEM
-#define OBJECT int4 /* index to object array */
+#ifdef SMLMEM
+#define OBJECT int16 /* index to object array */
#else
-#define OBJECT int2 /* index to object array */
+#define OBJECT int32 /* index to object array */
#endif
#endif
@@ -107,17 +57,17 @@ typedef struct {
} OBJREC;
#ifndef MAXOBJBLK
-#ifdef BIGMEM
-#define MAXOBJBLK 65535 /* maximum number of object blocks */
+#ifdef SMLMEM
+#define MAXOBJBLK 1023 /* maximum number of object blocks */
#else
-#define MAXOBJBLK 63 /* maximum number of object blocks */
+#define MAXOBJBLK 131071 /* maximum number of object blocks */
#endif
#endif
extern OBJREC *objblock[MAXOBJBLK]; /* the object blocks */
extern OBJECT nobjects; /* # of objects */
-#define OBJBLKSHFT 9
+#define OBJBLKSHFT 11
#define OBJBLKSIZ (1<>OBJBLKSHFT]+((obj)&(OBJBLKSIZ-1)))
@@ -129,48 +79,19 @@ extern OBJECT nobjects; /* # of objects */
* the objects in ascending order.
*/
-#define MAXSET 127 /* maximum object set size */
+#define MAXSET 511 /* maximum object set size */
#define setfree(os) free((void *)(os))
extern void (*addobjnotify[])(); /* people to notify of new objects */
-#ifdef NOPROTO
-
-extern int objndx();
-extern int lastmod();
-extern int modifier();
-extern int object();
-extern void insertobject();
-extern void clearobjndx();
-extern void insertelem();
-extern void deletelem();
-extern int inset();
-extern int setequal();
-extern void setcopy();
-extern OBJECT * setsave();
-extern void setunion();
-extern void setintersect();
-extern OCTREE fullnode();
-extern void objset();
-extern int dosets();
-extern void donesets();
-extern int otype();
-extern void objerror();
-extern int readfargs();
-extern void freefargs();
-extern void readobj();
-extern void getobject();
-extern int newobject();
-extern void freeobjects();
-extern int free_os();
-
-#else
/* defined in modobject.c */
-extern int objndx(OBJREC *op);
-extern int lastmod(OBJECT obj, char *mname);
-extern int modifier(char *name);
-extern int object(char *oname);
+extern OBJECT objndx(OBJREC *op);
+extern OBJECT lastmod(OBJECT obj, char *mname);
+extern OBJECT modifier(char *name);
+extern OBJECT object(char *oname);
+extern int eqreal(double d1, double d2);
+extern int eqobjects(OBJECT obj1, OBJECT obj2);
extern void insertobject(OBJECT obj);
extern void clearobjndx(void);
/* defined in objset.c */
@@ -196,9 +117,14 @@ extern void freefargs(FUNARGS *fa);
/* defined in readobj.c */
extern void readobj(char *inpspec);
extern void getobject(char *name, FILE *fp);
-extern int newobject();
+extern OBJECT newobject(void);
extern void freeobjects(int firstobj, int nobjs);
/* defined in free_os.c */
extern int free_os(OBJREC *op);
+
+#ifdef __cplusplus
+}
#endif
+#endif /* _RAD_OBJECT_H_ */
+