1 | /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// |
---|
2 | /** |
---|
3 | * Contains preprocessor stuff. This should be the first included header. |
---|
4 | * \file IcePreprocessor.h |
---|
5 | * \author Pierre Terdiman |
---|
6 | * \date April, 4, 2000 |
---|
7 | */ |
---|
8 | /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// |
---|
9 | |
---|
10 | /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// |
---|
11 | // Include Guard |
---|
12 | #ifndef __ICEPREPROCESSOR_H__ |
---|
13 | #define __ICEPREPROCESSOR_H__ |
---|
14 | |
---|
15 | // Check platform |
---|
16 | #if defined( _WIN32 ) || defined( WIN32 ) |
---|
17 | // #pragma message("Compiling on Windows...") |
---|
18 | #define PLATFORM_WINDOWS |
---|
19 | #else |
---|
20 | // don't issue pragmas on unknown platforms |
---|
21 | // #pragma message("Compiling on unknown platform...") |
---|
22 | #endif |
---|
23 | |
---|
24 | // Check compiler |
---|
25 | #if defined(_MSC_VER) |
---|
26 | // #pragma message("Compiling with VC++...") |
---|
27 | #define COMPILER_VISUAL_CPP |
---|
28 | #else |
---|
29 | // don't issue pragmas on unknown platforms |
---|
30 | // #pragma message("Compiling with unknown compiler...") |
---|
31 | #endif |
---|
32 | |
---|
33 | // Check compiler options. If this file is included in user-apps, this |
---|
34 | // shouldn't be needed, so that they can use what they like best. |
---|
35 | #ifndef ICE_DONT_CHECK_COMPILER_OPTIONS |
---|
36 | #ifdef COMPILER_VISUAL_CPP |
---|
37 | #if defined(_CHAR_UNSIGNED) |
---|
38 | #endif |
---|
39 | |
---|
40 | #if defined(_CPPRTTI) |
---|
41 | #error Please disable RTTI... |
---|
42 | #endif |
---|
43 | |
---|
44 | #if defined(_CPPUNWIND) |
---|
45 | #error Please disable exceptions... |
---|
46 | #endif |
---|
47 | |
---|
48 | #if defined(_MT) |
---|
49 | // Multithreading |
---|
50 | #endif |
---|
51 | #endif |
---|
52 | #endif |
---|
53 | |
---|
54 | // Check debug mode |
---|
55 | #ifdef DEBUG // May be defined instead of _DEBUG. Let's fix it. |
---|
56 | #ifndef _DEBUG |
---|
57 | #define _DEBUG |
---|
58 | #endif |
---|
59 | #endif |
---|
60 | |
---|
61 | #ifdef _DEBUG |
---|
62 | // Here you may define items for debug builds |
---|
63 | #endif |
---|
64 | |
---|
65 | #ifndef THIS_FILE |
---|
66 | #define THIS_FILE __FILE__ |
---|
67 | #endif |
---|
68 | |
---|
69 | #ifndef ICE_NO_DLL |
---|
70 | #ifdef ICECORE_EXPORTS |
---|
71 | #define ICECORE_API __declspec(dllexport) |
---|
72 | #else |
---|
73 | #define ICECORE_API __declspec(dllimport) |
---|
74 | #endif |
---|
75 | #else |
---|
76 | #define ICECORE_API |
---|
77 | #endif |
---|
78 | |
---|
79 | // Don't override new/delete |
---|
80 | // #define DEFAULT_NEWDELETE |
---|
81 | #define DONT_TRACK_MEMORY_LEAKS |
---|
82 | |
---|
83 | #define FUNCTION extern "C" |
---|
84 | |
---|
85 | // Cosmetic stuff [mainly useful with multiple inheritance] |
---|
86 | #define override(base_class) virtual |
---|
87 | |
---|
88 | // Our own inline keyword, so that: |
---|
89 | // - we can switch to __forceinline to check it's really better or not |
---|
90 | // - we can remove __forceinline if the compiler doesn't support it |
---|
91 | // #define inline_ __forceinline |
---|
92 | // #define inline_ inline |
---|
93 | |
---|
94 | // Contributed by Bruce Mitchener |
---|
95 | #if defined(COMPILER_VISUAL_CPP) |
---|
96 | #define inline_ __forceinline |
---|
97 | // #define inline_ inline |
---|
98 | #elif defined(__GNUC__) && __GNUC__ < 3 |
---|
99 | #define inline_ inline |
---|
100 | #elif defined(__GNUC__) |
---|
101 | #define inline_ inline __attribute__ ((always_inline)) |
---|
102 | #else |
---|
103 | #define inline_ inline |
---|
104 | #endif |
---|
105 | |
---|
106 | // Down the hatch |
---|
107 | #ifdef _MSC_VER |
---|
108 | #pragma inline_depth( 255 ) |
---|
109 | #endif |
---|
110 | |
---|
111 | #ifdef COMPILER_VISUAL_CPP |
---|
112 | #pragma intrinsic(memcmp) |
---|
113 | #pragma intrinsic(memcpy) |
---|
114 | #pragma intrinsic(memset) |
---|
115 | #pragma intrinsic(strcat) |
---|
116 | #pragma intrinsic(strcmp) |
---|
117 | #pragma intrinsic(strcpy) |
---|
118 | #pragma intrinsic(strlen) |
---|
119 | #pragma intrinsic(abs) |
---|
120 | #pragma intrinsic(labs) |
---|
121 | #endif |
---|
122 | |
---|
123 | // ANSI compliance |
---|
124 | #ifdef _DEBUG |
---|
125 | // Remove painful warning in debug |
---|
126 | inline_ bool __False__(){ return false; } |
---|
127 | #define for if(__False__()){} else for |
---|
128 | #else |
---|
129 | #define for if(0){} else for |
---|
130 | #endif |
---|
131 | |
---|
132 | #endif // __ICEPREPROCESSOR_H__ |
---|