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
IcePreprocessor.h
Go to the documentation of this file.
1 
8 
11 // Include Guard
12 #ifndef __ICEPREPROCESSOR_H__
13 #define __ICEPREPROCESSOR_H__
14 #include "config.h"
15 
16  // Check platform
17  #if defined( _WIN32 ) || defined( WIN32 )
18  //#pragma message("Compiling on Windows...")
19  #define PLATFORM_WINDOWS
20  #else
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  //#pragma message("Compiling with unknown compiler...")
30  #endif
31 
32  // Check compiler options. If this file is included in user-apps, this
33  // shouldn't be needed, so that they can use what they like best.
34  #ifndef ICE_DONT_CHECK_COMPILER_OPTIONS
35  #ifdef COMPILER_VISUAL_CPP
36  #if defined(_CHAR_UNSIGNED)
37  #endif
38 
39  #if defined(_CPPRTTI)
40  #error Please disable RTTI...
41  #endif
42 
43  #if defined(_CPPUNWIND)
44  #error Please disable exceptions...
45  #endif
46 
47  #if defined(_MT)
48  // Multithreading
49  #endif
50  #endif
51  #endif
52 
53  // Check debug mode
54  #ifdef DEBUG // May be defined instead of _DEBUG. Let's fix it.
55  #ifndef _DEBUG
56  #define _DEBUG
57  #endif
58  #endif
59 
60  #ifdef _DEBUG
61  // Here you may define items for debug builds
62  #endif
63 
64  #ifndef THIS_FILE
65  #define THIS_FILE __FILE__
66  #endif
67 
68  #ifndef ICE_NO_DLL
69  #ifdef ICECORE_EXPORTS
70  #define ICECORE_API __declspec(dllexport)
71  #else
72  #define ICECORE_API __declspec(dllimport)
73  #endif
74  #else
75  #define ICECORE_API
76  #endif
77 
78  // Don't override new/delete
79 // #define DEFAULT_NEWDELETE
80  #define DONT_TRACK_MEMORY_LEAKS
81 
82  #define FUNCTION extern "C"
83 
84  // Cosmetic stuff [mainly useful with multiple inheritance]
85  #define override(base_class) virtual
86 
87  // Our own inline keyword, so that:
88  // - we can switch to __forceinline to check it's really better or not
89  // - we can remove __forceinline if the compiler doesn't support it
90 // #define inline_ __forceinline
91 // #define inline_ inline
92 
93  // Contributed by Bruce Mitchener
94  #if defined(COMPILER_VISUAL_CPP)
95  #define inline_ __forceinline
96 // #define inline_ inline
97  #elif defined(__GNUC__) && __GNUC__ < 3
98  #define inline_ inline
99  #elif defined(__GNUC__)
100  #define inline_ inline __attribute__ ((always_inline))
101  #else
102  #define inline_ inline
103  #endif
104 
105 
106  #ifdef COMPILER_VISUAL_CPP
107  // Down the hatch
108  #pragma inline_depth( 255 )
109  #pragma intrinsic(labs)
110  #endif
111 
112  // Silly Cygwin defines _X in ctypes.h
113  #ifdef _X
114  #undef _X
115  #endif
116 
117 #endif // __ICEPREPROCESSOR_H__