File: OPC_Types.h

package info (click to toggle)
arkrpg 0.1.4b-6
  • links: PTS
  • area: main
  • in suites: sarge
  • size: 6,104 kB
  • ctags: 5,445
  • sloc: cpp: 28,145; sh: 9,006; ansic: 3,259; makefile: 344
file content (279 lines) | stat: -rwxr-xr-x 6,769 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/*

 *	OPCODE - Optimized Collision Detection

 *	Copyright (C) 2001 Pierre Terdiman

 *	Homepage: http://www.codercorner.com/Opcode.htm

 */

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/**

 *	Contains custom types.

 *	\file		OPC_Types.h

 *	\author		Pierre Terdiman

 *	\date		April, 4, 2000

 */

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

// Include Guard

#ifndef __ICETYPES_H__

#define __ICETYPES_H__



	///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

	// CONSTANTS

#ifndef PI
	#define PI					3.1415926535897932384626433832795028841971693993751f	//!<	PI

#endif //PI
	#define HALFPI				1.57079632679489661923f									//!<	0.5 * PI

	#define TWOPI				6.28318530717958647692f									//!<	2.0 * PI

	#define INVPI				0.31830988618379067154f									//!<	1.0 / PI



	#define RADTODEG			57.2957795130823208768f									//!<	180.0 / PI, convert radians to degrees

	#define DEGTORAD			0.01745329251994329577f									//!<	PI / 180.0, convert degrees to radians



	#define EXP					2.71828182845904523536f									//!<	e

	#define ILOG2				3.32192809488736234787f									//!<	1.0 / log10(2)



	#define INV3				0.33333333333333333333f									//!<	1/3

	#define INV6				0.16666666666666666666f									//!<	1/6

	#define INV7				0.14285714285714285714f									//!<	1/7

	#define INV9				0.11111111111111111111f									//!<	1/9

	#define INV255				0.00392156862745098039f									//!<	1/255



	#define null				0														//!<	our own NULL pointer



	// New types

	typedef signed char			sbyte;		//!<	sizeof(sbyte)	must be 1

	typedef unsigned char		ubyte;		//!<	sizeof(ubyte)	must be 1

	typedef signed short		sword;		//!<	sizeof(sword)	must be 2

	typedef unsigned short		uword;		//!<	sizeof(uword)	must be 2

	typedef signed int			sdword;		//!<	sizeof(sdword)	must be 4

	typedef unsigned int		udword;		//!<	sizeof(udword)	must be 4

#if defined (_MSV_VER)

	typedef signed __int64		sqword;		//!<	sizeof(sqword)	must be 8

	typedef unsigned __int64	uqword;		//!<	sizeof(uqword)	must be 8

#elif defined (__GNUC__)

	typedef signed long long		sqword;		//!<	sizeof(sqword)	must be 8

	typedef unsigned long long	uqword;		//!<	sizeof(uqword)	must be 8

#endif

	typedef float				float32;	//!<	sizeof(float32)	must be 4

	typedef double				float64;	//!<	sizeof(float64)	must be 4



	typedef udword				DynID;		//!<	Dynamic identifier

	typedef uword				KID;		//!<	Kernel ID

	typedef udword				RTYPE;		//!<	Relationship-type (!) between owners and references

	#define	INVALID_ID			0xffffffff	//!<	Invalid dword ID (counterpart of null pointers)

	#define	INVALID_KID			0xffff		//!<	Invalid Kernel ID

	#define	INVALID_NUMBER		0xDEADBEEF	//!<	Standard junk value



	// Define BOOL if needed

	#ifndef BOOL

	typedef int	BOOL;						//!<	Another boolean type.

	#endif



	//! Union of a float and a sdword

	typedef union {

		float	f;							//!<	The float

		sdword	d;							//!<	The integer

	}scell;



	//! Union of a float and a udword

	typedef union {

		float	f;							//!<	The float

		udword	d;							//!<	The integer

	}ucell;



	//! A generic couple structure

	struct Pair

	{

		udword	id0;						//!<	First index of the pair

		udword	id1;						//!<	Second index of the pair

	};



	// Type ranges

	#define	MAX_SBYTE			0x7f							//!<	max possible sbyte value

	#define	MIN_SBYTE			0x80							//!<	min possible sbyte value

	#define	MAX_UBYTE			0xff							//!<	max possible ubyte value

	#define	MIN_UBYTE			0x00							//!<	min possible ubyte value

	#define	MAX_SWORD			0x7fff							//!<	max possible sword value

	#define	MIN_SWORD			0x8000							//!<	min possible sword value

	#define	MAX_UWORD			0xffff							//!<	max possible uword value

	#define	MIN_UWORD			0x0000							//!<	min possible uword value

	#define	MAX_SDWORD			0x7fffffff						//!<	max possible sdword value

	#define	MIN_SDWORD			0x80000000						//!<	min possible sdword value

	#define	MAX_UDWORD			0xffffffff						//!<	max possible udword value

	#define	MIN_UDWORD			0x00000000						//!<	min possible udword value

	#define	MAX_FLOAT			FLT_MAX							//!<	max possible float value

	#define	MIN_FLOAT			(-FLT_MAX)						//!<	min possible loat value

	#define IEEE_1_0			0x3f800000						//!<	integer representation of 1.0

	#define IEEE_255_0			0x437f0000						//!<	integer representation of 255.0



	#define ONE_OVER_RAND_MAX	(1.0f / float(RAND_MAX))		//!<	Inverse of the max possible value returned by rand()



	typedef int					(__stdcall* PROC)();			//!<	A standard procedure call.

	typedef bool				(*ENUMERATION)(udword value, udword param, udword context);	//!< ICE standard enumeration call

	typedef	void**				VTABLE;							//!<	A V-Table.



	#undef		MIN

	#undef		MAX

	#define		MIN(a, b)       ((a) < (b) ? (a) : (b))			//!<	Returns the min value between a and b

	#define		MAX(a, b)       ((a) > (b) ? (a) : (b))			//!<	Returns the max value between a and b

	#define		MAXMAX(a,b,c)   ((a) > (b) ? MAX (a,c) : MAX (b,c))	//!<	Returns the max value between a, b and c



	#define		SQR(x)			((x)*(x))						//!<	Returns x square

	#define		CUBE(x)			((x)*(x)*(x))					//!<	Returns x cube



	#define		AND		&										//!<	...

	#define		OR		|										//!<	...

	#define		XOR		^										//!<	...



	#define		QUADRAT(x)		((x)*(x))						//!<	Returns x square



#ifdef WIN32

#   define srand48(x) srand((unsigned int) (x))

#	define srandom(x) srand((unsigned int) (x))

#	define random()   ((double) rand())

#   define drand48()  ((double) (((double) rand()) / ((double) RAND_MAX)))

#endif



#endif // __ICETYPES_H__

// END-OF-FILE\n