ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/common/standard.h
Revision: 2.14
Committed: Wed Dec 16 18:16:12 1998 UTC (25 years, 4 months ago) by gwlarson
Content type: text/plain
Branch: MAIN
Changes since 2.13: +17 -1 lines
Log Message:
added new tcos() table-lookup function and tsin() and ttan() macros
added DCHECK(test,error_type,error_message) macro for debugging checks

File Contents

# Content
1 /* Copyright (c) 1998 Silicon Graphics, Inc. */
2
3 /* SCCSid "$SunId$ SGI" */
4
5 /*
6 * Miscellaneous definitions required by many routines.
7 */
8
9 #include <stdio.h>
10
11 #include <sys/types.h>
12
13 #include <fcntl.h>
14
15 #include <math.h>
16
17 #include <errno.h>
18
19 #include "mat4.h"
20 /* regular transformation */
21 typedef struct {
22 MAT4 xfm; /* transform matrix */
23 FLOAT sca; /* scalefactor */
24 } XF;
25 /* complemetary tranformation */
26 typedef struct {
27 XF f; /* forward */
28 XF b; /* backward */
29 } FULLXF;
30
31 #ifndef PI
32 #ifdef M_PI
33 #define PI ((double)M_PI)
34 #else
35 #define PI 3.14159265358979323846
36 #endif
37 #endif
38
39 #ifndef F_OK /* mode bits for access(2) call */
40 #define R_OK 4 /* readable */
41 #define W_OK 2 /* writable */
42 #define X_OK 1 /* executable */
43 #define F_OK 0 /* exists */
44 #endif
45
46 #ifndef int2
47 #define int2 short /* two-byte integer */
48 #endif
49 #ifndef int4
50 #define int4 int /* four-byte integer */
51 #endif
52
53 extern int eputs(), wputs(); /* standard error output functions */
54
55 /* error codes */
56 #define WARNING 0 /* non-fatal error */
57 #define USER 1 /* fatal user-caused error */
58 #define SYSTEM 2 /* fatal system-related error */
59 #define INTERNAL 3 /* fatal program-related error */
60 #define CONSISTENCY 4 /* bad consistency check, abort */
61 #define COMMAND 5 /* interactive error */
62 #define NERRS 6
63 /* error struct */
64 extern struct erract {
65 char pre[16]; /* prefix message */
66 int (*pf)(); /* put function (resettable) */
67 int ec; /* exit code (0 means non-fatal) */
68 } erract[NERRS]; /* list of error actions */
69
70 #define ERRACT_INIT { {"warning - ", wputs, 0}, \
71 {"fatal - ", eputs, 1}, \
72 {"system - ", eputs, 2}, \
73 {"internal - ", eputs, 1}, \
74 {"consistency - ", eputs, -1}, \
75 {"", NULL, 0} }
76
77 extern char errmsg[]; /* global buffer for error messages */
78
79 #ifdef FASTMATH
80 #define tcos cos
81 #define tsin sin
82 #define ttan tan
83 #else
84 extern double tcos(); /* table-based cosine approximation */
85 #define tsin(x) tcos((x)-(PI/2.))
86 #define ttan(x) (tsin(x)/tcos(x))
87 #endif
88 /* custom version of assert(3) */
89 #define CHECK(be,et,em) ((be) ? error(et,em) : 0)
90 #ifdef DEBUG
91 #define DCHECK CHECK
92 #else
93 #define DCHECK(be,et,em) 0
94 #endif
95 /* memory operations */
96 #ifdef NOSTRUCTASS
97 #define copystruct(d,s) bcopy((char *)(s),(char *)(d),sizeof(*(d)))
98 #else
99 #define copystruct(d,s) (*(d) = *(s))
100 #endif
101
102 #ifdef BSD
103 extern long lseek();
104 #else
105 #define bcopy(s,d,n) (void)memcpy(d,s,n)
106 #define bzero(d,n) (void)memset(d,0,n)
107 #define bcmp(b1,b2,n) memcmp(b1,b2,n)
108 #define index strchr
109 #define rindex strrchr
110 extern off_t lseek();
111 #endif
112 extern long ftell();
113
114 extern char *sskip(), *sskip2();
115 extern char *getpath(), *getenv();
116 #ifndef malloc
117 extern char *malloc(), *calloc(), *realloc();
118 #endif
119 extern char *bmalloc(), *savestr(), *savqstr();
120
121 #ifdef DCL_ATOF
122 extern double atof();
123 #endif
124
125 #ifdef MSDOS
126 #define NIX 1
127 #endif
128 #ifdef AMIGA
129 #define NIX 1
130 #endif
131