Documentation of SFML 1.6

Warning: this page refers to an old version of SFML. Click here to switch to the latest version.
Config.hpp
1 
2 //
3 // SFML - Simple and Fast Multimedia Library
4 // Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
5 //
6 // This software is provided 'as-is', without any express or implied warranty.
7 // In no event will the authors be held liable for any damages arising from the use of this software.
8 //
9 // Permission is granted to anyone to use this software for any purpose,
10 // including commercial applications, and to alter it and redistribute it freely,
11 // subject to the following restrictions:
12 //
13 // 1. The origin of this software must not be misrepresented;
14 // you must not claim that you wrote the original software.
15 // If you use this software in a product, an acknowledgment
16 // in the product documentation would be appreciated but is not required.
17 //
18 // 2. Altered source versions must be plainly marked as such,
19 // and must not be misrepresented as being the original software.
20 //
21 // 3. This notice may not be removed or altered from any source distribution.
22 //
24 
25 #ifndef SFML_CONFIG_HPP
26 #define SFML_CONFIG_HPP
27 
29 // Identify the operating system
31 #if defined(_WIN32) || defined(__WIN32__)
32 
33  // Windows
34  #define SFML_SYSTEM_WINDOWS
35  #ifndef WIN32_LEAN_AND_MEAN
36  #define WIN32_LEAN_AND_MEAN
37  #endif
38  #ifndef NOMINMAX
39  #define NOMINMAX
40  #endif
41 
42 #elif defined(linux) || defined(__linux)
43 
44  // Linux
45  #define SFML_SYSTEM_LINUX
46 
47 #elif defined(__APPLE__) || defined(MACOSX) || defined(macintosh) || defined(Macintosh)
48 
49  // MacOS
50  #define SFML_SYSTEM_MACOS
51 
52 #elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
53 
54  // FreeBSD
55  #define SFML_SYSTEM_FREEBSD
56 
57 #else
58 
59  // Unsupported system
60  #error This operating system is not supported by SFML library
61 
62 #endif
63 
64 
66 // Define a portable debug macro
68 #if !defined(NDEBUG)
69 
70  #define SFML_DEBUG
71 
72 #endif
73 
74 
76 // Define portable import / export macros
78 #if defined(SFML_SYSTEM_WINDOWS)
79 
80  #ifdef SFML_DYNAMIC
81 
82  // Windows platforms
83  #ifdef SFML_EXPORTS
84 
85  // From DLL side, we must export
86  #define SFML_API __declspec(dllexport)
87 
88  #else
89 
90  // From client application side, we must import
91  #define SFML_API __declspec(dllimport)
92 
93  #endif
94 
95  // For Visual C++ compilers, we also need to turn off this annoying C4251 warning.
96  // You can read lots ot different things about it, but the point is the code will
97  // just work fine, and so the simplest way to get rid of this warning is to disable it
98  #ifdef _MSC_VER
99 
100  #pragma warning(disable : 4251)
101 
102  #endif
103 
104  #else
105 
106  // No specific directive needed for static build
107  #define SFML_API
108 
109  #endif
110 
111 #else
112 
113  // Other platforms don't need to define anything
114  #define SFML_API
115 
116 #endif
117 
118 
120 // Define portable fixed-size types
122 #include <climits>
123 
124 namespace sf
125 {
126  // 8 bits integer types
127  #if UCHAR_MAX == 0xFF
128  typedef signed char Int8;
129  typedef unsigned char Uint8;
130  #else
131  #error No 8 bits integer type for this platform
132  #endif
133 
134  // 16 bits integer types
135  #if USHRT_MAX == 0xFFFF
136  typedef signed short Int16;
137  typedef unsigned short Uint16;
138  #elif UINT_MAX == 0xFFFF
139  typedef signed int Int16;
140  typedef unsigned int Uint16;
141  #elif ULONG_MAX == 0xFFFF
142  typedef signed long Int16;
143  typedef unsigned long Uint16;
144  #else
145  #error No 16 bits integer type for this platform
146  #endif
147 
148  // 32 bits integer types
149  #if USHRT_MAX == 0xFFFFFFFF
150  typedef signed short Int32;
151  typedef unsigned short Uint32;
152  #elif UINT_MAX == 0xFFFFFFFF
153  typedef signed int Int32;
154  typedef unsigned int Uint32;
155  #elif ULONG_MAX == 0xFFFFFFFF
156  typedef signed long Int32;
157  typedef unsigned long Uint32;
158  #else
159  #error No 32 bits integer type for this platform
160  #endif
161 
162 } // namespace sf
163 
164 
165 #endif // SFML_CONFIG_HPP