Vegastrike 0.5.1 rc1  1.0
Original sources for Vegastrike Evolved
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
IceTypes.h
Go to the documentation of this file.
1 
8 
11 // Include Guard
12 #ifndef __ICETYPES_H__
13 #define __ICETYPES_H__
14 
15  #define USE_HANDLE_MANAGER
16 
17  // Constants
18  #ifndef PI
19  #define PI 3.1415926535897932384626433832795028841971693993751f
20  #endif
21  #define HALFPI 1.57079632679489661923f
22  #define TWOPI 6.28318530717958647692f
23  #define INVPI 0.31830988618379067154f
24 
25  #define RADTODEG 57.2957795130823208768f
26  #define DEGTORAD 0.01745329251994329577f
27 
28  #define EXP 2.71828182845904523536f
29  #define INVLOG2 3.32192809488736234787f
30  #define LN2 0.693147180559945f
31  #define INVLN2 1.44269504089f
32 
33  #define INV3 0.33333333333333333333f
34  #define INV6 0.16666666666666666666f
35  #define INV7 0.14285714285714285714f
36  #define INV9 0.11111111111111111111f
37  #define INV255 0.00392156862745098039f
38 
39  #define SQRT2 1.41421356237f
40  #define INVSQRT2 0.707106781188f
41 
42  #define SQRT3 1.73205080757f
43  #define INVSQRT3 0.577350269189f
44 
45  #define null 0
46 
47  // Custom types used in ICE
48  typedef signed char sbyte;
49  typedef unsigned char ubyte;
50  typedef signed short sword;
51  typedef unsigned short uword;
52  typedef signed int sdword;
53  typedef unsigned int udword;
54  typedef int64 sqword;
55  typedef uint64 uqword;
56  typedef float float32;
57  typedef double float64;
58 
59  // ICE_COMPILE_TIME_ASSERT(sizeof(bool)==1); // ...otherwise things might fail with VC++ 4.2 !
60  ICE_COMPILE_TIME_ASSERT(sizeof(ubyte)==1);
61  ICE_COMPILE_TIME_ASSERT(sizeof(sbyte)==1);
62  ICE_COMPILE_TIME_ASSERT(sizeof(sword)==2);
63  ICE_COMPILE_TIME_ASSERT(sizeof(uword)==2);
64  ICE_COMPILE_TIME_ASSERT(sizeof(udword)==4);
65  ICE_COMPILE_TIME_ASSERT(sizeof(sdword)==4);
66  ICE_COMPILE_TIME_ASSERT(sizeof(uqword)==8);
67  ICE_COMPILE_TIME_ASSERT(sizeof(sqword)==8);
68 
70  #define DECLARE_ICE_HANDLE(name) struct name##__ { int unused; }; typedef struct name##__ *name
71 
72  typedef udword DynID;
73 #ifdef USE_HANDLE_MANAGER
74  typedef udword KID;
75 // DECLARE_ICE_HANDLE(KID);
76 #else
77  typedef uword KID;
78 #endif
79  typedef udword RTYPE;
80  #define INVALID_ID 0xffffffff
81 #ifdef USE_HANDLE_MANAGER
82  #define INVALID_KID 0xffffffff
83 #else
84  #define INVALID_KID 0xffff
85 #endif
86  #define INVALID_NUMBER 0xDEADBEEF
87 
88  // Define BOOL if needed
89  #ifndef BOOL
90  typedef int BOOL;
91  #endif
92 
94  typedef union {
95  float f;
97  }scell;
98 
100  typedef union {
101  float f;
103  }ucell;
104 
105  // Type ranges
106  #define MAX_SBYTE 0x7f
107  #define MIN_SBYTE 0x80
108  #define MAX_UBYTE 0xff
109  #define MIN_UBYTE 0x00
110  #define MAX_SWORD 0x7fff
111  #define MIN_SWORD 0x8000
112  #define MAX_UWORD 0xffff
113  #define MIN_UWORD 0x0000
114  #define MAX_SDWORD 0x7fffffff
115  #define MIN_SDWORD 0x80000000
116  #define MAX_UDWORD 0xffffffff
117  #define MIN_UDWORD 0x00000000
118  #define MAX_FLOAT FLT_MAX
119  #define MIN_FLOAT (-FLT_MAX)
120  #define IEEE_1_0 0x3f800000
121  #define IEEE_255_0 0x437f0000
122  #define IEEE_MAX_FLOAT 0x7f7fffff
123  #define IEEE_MIN_FLOAT 0xff7fffff
124  #define IEEE_UNDERFLOW_LIMIT 0x1a000000
125 
126  #define ONE_OVER_RAND_MAX (1.0f / float(RAND_MAX))
127 
128  typedef bool (*ENUMERATION)(udword value, udword param, udword context);
129  typedef void** VTABLE;
130 
131  #undef MIN
132  #undef MAX
133  #define MIN(a, b) ((a) < (b) ? (a) : (b))
134  #define MAX(a, b) ((a) > (b) ? (a) : (b))
135  #define MAXMAX(a,b,c) ((a) > (b) ? MAX (a,c) : MAX (b,c))
136 
137  template<class T> inline_ const T& TMin (const T& a, const T& b) { return b < a ? b : a; }
138  template<class T> inline_ const T& TMax (const T& a, const T& b) { return a < b ? b : a; }
139  template<class T> inline_ void TSetMin (T& a, const T& b) { if(a>b) a = b; }
140  template<class T> inline_ void TSetMax (T& a, const T& b) { if(a<b) a = b; }
141 
142  #define SQR(x) ((x)*(x))
143  #define CUBE(x) ((x)*(x)*(x))
144 
145  #define AND &
146  #define OR |
147  #define XOR ^
148 
149  #define QUADRAT(x) ((x)*(x))
150 
151 #ifdef _WIN32
152 # define srand48(x) srand((unsigned int) (x))
153 # define srandom(x) srand((unsigned int) (x))
154 # define random() ((double) rand())
155 # define drand48() ((double) (((double) rand()) / ((double) RAND_MAX)))
156 #endif
157 
158 #endif // __ICETYPES_H__