Go to the documentation of this file.
13 #ifndef __FLEXT_PREFIX_H
14 #define __FLEXT_PREFIX_H
17 #define FLEXT_SYS_UNKNOWN 0
20 #define FLEXT_SYS_MAX 1
24 #define FLEXT_SYS_MAX 1
25 #define FLEXT_SYS FLEXT_SYS_MAX
29 #define FLEXT_SYS_PD 2
33 #define FLEXT_SYS_PD 2
34 #define FLEXT_SYS FLEXT_SYS_PD
37 #ifndef FLEXT_SYS_JMAX
38 #define FLEXT_SYS_JMAX 3
42 #define FLEXT_SYS_JMAX 3
43 #define FLEXT_SYS FLEXT_SYS_JMAX
47 #define FLEXT_OS_UNKNOWN 0
48 #define FLEXT_OS_WIN 1
49 #define FLEXT_OS_MAC 2
50 #define FLEXT_OS_LINUX 3
51 #define FLEXT_OS_IRIX 4
54 #define FLEXT_OSAPI_UNKNOWN 0
56 #define FLEXT_OSAPI_UNIX_POSIX 1
58 #define FLEXT_OSAPI_MAC_CLASSIC 2
59 #define FLEXT_OSAPI_MAC_CARBON 3
60 #define FLEXT_OSAPI_MAC_MACH 4
62 #define FLEXT_OSAPI_WIN_NATIVE 5
63 #define FLEXT_OSAPI_WIN_POSIX 6
66 #define FLEXT_CPU_UNKNOWN 0
67 #define FLEXT_CPU_IA32 1
68 #define FLEXT_CPU_PPC 2
69 #define FLEXT_CPU_MIPS 3
70 #define FLEXT_CPU_ALPHA 4
72 #define FLEXT_CPU_IA64 5
73 #define FLEXT_CPU_X86_64 6
74 #define FLEXT_CPU_PPC64 7
77 #define FLEXT_CPU_INTEL FLEXT_CPU_IA32
80 #define FLEXT_THR_POSIX 1
81 #define FLEXT_THR_WIN32 2
82 #define FLEXT_THR_MP 3
89 #define FLEXT_SYS FLEXT_SYS_MAX
92 #define FLEXT_SYS FLEXT_SYS_PD
98 #if defined(_DEBUG) && !defined(FLEXT_DEBUG)
105 #if FLEXT_SYS == FLEXT_SYS_MAX || FLEXT_SYS == FLEXT_SYS_PD
107 #error "System must be defined by either FLEXT_SYS_MAX or FLEXT_SYS_PD"
111 #if defined(_MSC_VER) || (defined(__ICC) && (FLEXT_OS == FLEXT_OS_WIN || defined(_WIN32)))
116 #if defined(_M_AMD64)
117 #define FLEXT_CPU FLEXT_CPU_X86_64
118 #elif defined(_M_IA64)
119 #define FLEXT_CPU FLEXT_CPU_IA64
120 #elif defined(_M_IX86)
121 #define FLEXT_CPU FLEXT_CPU_IA32
122 #elif defined(_M_PPC)
123 #define FLEXT_CPU FLEXT_CPU_PPC
124 #elif defined(_M_MRX000)
125 #define FLEXT_CPU FLEXT_CPU_MIPS
126 #elif defined(_M_ALPHA)
127 #define FLEXT_CPU FLEXT_CPU_ALPHA
129 #define FLEXT_CPU FLEXT_CPU_UNKNOWN
134 #if defined(_WIN32) || defined(_WIN64)
135 #define FLEXT_OS FLEXT_OS_WIN
136 #define FLEXT_OSAPI FLEXT_OSAPI_WIN_NATIVE
138 #define FLEXT_OS FLEXT_OS_UNKNOWN
139 #define FLEXT_OSAPI FLEXT_OSAPI_UNKNOWN
144 #elif defined(__BORLANDC__)
148 #define FLEXT_CPU FLEXT_CPU_INTEL
151 #define FLEXT_OS FLEXT_OS_WIN
152 #define FLEXT_OSAPI FLEXT_OSAPI_WIN_NATIVE
154 #define FLEXT_OSAPI FLEXT_OSAPI_UNKNOWN
158 #elif defined(__MWERKS__)
165 #define TARGET_CPU_PPC64 1
167 #define TARGET_CPU_PPC 1
171 #define TARGET_CPU_X86_64 1
173 #define TARGET_CPU_IA32 1
176 #define TARGET_OS_MAC 1
177 #define TARGET_API_MAC_OSX 1
179 #ifndef __CONDITIONALMACROS__
180 #include <ConditionalMacros.h>
185 #if TARGET_CPU_X86_64
186 #define FLEXT_CPU FLEXT_CPU_X86_64
188 #define FLEXT_CPU FLEXT_CPU_IA32
189 #elif TARGET_CPU_PPC64
190 #define FLEXT_CPU FLEXT_CPU_PPC64
192 #define FLEXT_CPU FLEXT_CPU_PPC
193 #elif TARGET_CPU_MIPS
194 #define FLEXT_CPU FLEXT_CPU_MIPS
195 #elif TARGET_CPU_ALPHA
196 #define FLEXT_CPU FLEXT_CPU_ALPHA
198 #define FLEXT_CPU FLEXT_CPU_UNKNOWN
204 #define FLEXT_OS FLEXT_OS_MAC
205 #elif TARGET_OS_WIN32
207 #define FLEXT_OS FLEXT_OS_WIN
209 #define FLEXT_OS FLEXT_OS_UNKNOWN
214 #if TARGET_API_MAC_MACH
217 #define FLEXT_OSAPI FLEXT_OSAPI_MAC_MACH
218 #elif TARGET_API_MAC_CARBON
220 #define FLEXT_OSAPI FLEXT_OSAPI_MAC_CARBON
222 #define FLEXT_OSAPI FLEXT_OSAPI_UNKNOWN
227 #pragma enumsalwaysint on
231 #elif defined(__GNUG__) || (defined(__ICC) && (FLEXT_OS == FLEXT_OS_LINUX || defined(linux) || defined(__linux__)))
237 #if defined(__x86_64__)
238 #define FLEXT_CPU FLEXT_CPU_X86_64
239 #elif defined(_X86_) || defined(__i386__) || defined(__i586__) || defined(__i686__)
240 #define FLEXT_CPU FLEXT_CPU_IA32
241 #elif defined(__ppc64__)
242 #define FLEXT_CPU FLEXT_CPU_PPC64
243 #elif defined(__ppc__)
244 #define FLEXT_CPU FLEXT_CPU_PPC
245 #elif defined(__MIPS__)
246 #define FLEXT_CPU FLEXT_CPU_MIPS
248 #define FLEXT_CPU FLEXT_CPU_UNKNOWN
253 #if defined(linux) || defined(__linux__) || defined(__FreeBSD_kernel__) || defined(__GNU__)
254 #define FLEXT_OS FLEXT_OS_LINUX
255 #elif defined(__CYGWIN__) || defined(__CYGWIN32__) || defined(__MINGW32__)
256 #define FLEXT_OS FLEXT_OS_WIN
257 #elif defined(__APPLE__) && defined(__MACH__)
258 #define FLEXT_OS FLEXT_OS_MAC
261 #define FLEXT_OS FLEXT_OS_UNKNOWN
266 #if FLEXT_OS == FLEXT_OS_MAC
267 #define FLEXT_OSAPI FLEXT_OSAPI_MAC_MACH
268 #elif FLEXT_OS == FLEXT_OS_WIN
269 #if defined(__MINGW32__)
270 #define FLEXT_OSAPI FLEXT_OSAPI_WIN_NATIVE
272 #define FLEXT_OSAPI FLEXT_OSAPI_WIN_POSIX
274 #elif FLEXT_OS == FLEXT_OS_LINUX || FLEXT_OS == FLEXT_OS_IRIX
275 #define FLEXT_OSAPI FLEXT_OSAPI_UNIX_POSIX
277 #define FLEXT_OSAPI FLEXT_OSAPI_UNKNOWN
281 #elif defined(__MRC__) && defined(MPW_CPLUS)
285 #error Apple MPW MrCpp v.5.0.0 or later compiler required
289 #if defined(__POWERPC__)
290 #define FLEXT_CPU FLEXT_CPU_PPC
292 #define FLEXT_CPU FLEXT_CPU_UNKNOWN
297 #if defined(macintosh)
298 #define FLEXT_OS FLEXT_OS_MAC
300 #define FLEXT_OS FLEXT_OS_UNKNOWN
305 #if FLEXT_OS == FLEXT_OS_MAC
306 #define FLEXT_OSAPI FLEXT_OSAPI_MAC_CLASSIC
308 #define FLEXT_OSAPI FLEXT_OSAPI_UNKNOWN
315 #if FLEXT_OS == FLEXT_OS_WIN
318 #if FLEXT_SYS == FLEXT_SYS_MAX
320 #elif FLEXT_SYS == FLEXT_SYS_PD
324 #elif FLEXT_OS == FLEXT_OS_LINUX
327 #if FLEXT_SYS == FLEXT_SYS_PD
330 #error "Flext SYS/OS combination unknown"
332 #elif FLEXT_OS == FLEXT_OS_IRIX
335 #if FLEXT_SYS == FLEXT_SYS_PD
338 #error "Flext SYS/OS combination unknown"
340 #elif FLEXT_OS == FLEXT_OS_MAC
343 #if FLEXT_SYS == FLEXT_SYS_PD
347 #error "Operating system could not be determined"
350 #if FLEXT_SYS == FLEXT_SYS_MAX
353 #if FLEXT_CPU == FLEXT_CPU_X86_64
359 #elif FLEXT_SYS == FLEXT_SYS_PD
367 #define FLEXT_THREADS
372 #if FLEXT_SYS == FLEXT_SYS_MAX && FLEXT_OS == FLEXT_OS_MAC && FLEXT_OSAPI != FLEXT_OSAPI_MAC_MACH
374 #define FLEXT_THREADS FLEXT_THR_MP
375 #elif FLEXT_SYS == FLEXT_SYS_MAX && FLEXT_OS == FLEXT_OS_WIN
377 #define FLEXT_THREADS FLEXT_THR_WIN32
379 #define FLEXT_THREADS FLEXT_THR_POSIX
390 #define FLEXT_CLASSDEF(CL) CL
391 #elif defined(FLEXT_DEBUG)
392 #if defined(FLEXT_SHARED)
393 #define FLEXT_CLASSDEF(CL) CL##_shared_d
394 #elif defined(FLEXT_THREADS)
395 #define FLEXT_CLASSDEF(CL) CL##_multi_d
397 #define FLEXT_CLASSDEF(CL) CL##_single_d
400 #if defined(FLEXT_SHARED)
401 #define FLEXT_CLASSDEF(CL) CL##_shared
402 #elif defined(FLEXT_THREADS)
403 #define FLEXT_CLASSDEF(CL) CL##_multi
405 #define FLEXT_CLASSDEF(CL) CL##_single
412 #if defined(_MSC_VER)
416 #define FLEXT_SHARE __declspec(dllexport)
418 #define FLEXT_SHARE __declspec(dllimport)
423 #define FLEXT_EXT __declspec(dllexport)
440 # define LIKELY(expression) (__builtin_expect(!!(expression), 1))
443 # define UNLIKELY(expression) (__builtin_expect(!!(expression), 0))
447 # define LIKELY(expression) (expression)
450 # define UNLIKELY(expression) (expression)
456 # define FLEXT_TEMPLATE template<typename flext_T>
457 # define FLEXT_TEMPIMPL(fun) template<typename flext_T> fun<flext_T>
458 # define FLEXT_TEMPINST(fun) fun<void>
459 # define FLEXT_TEMPSUB(fun) typename fun<flext_T>
460 # define FLEXT_TEMP_TYPENAME typename
462 # define FLEXT_TEMPLATE
463 # define FLEXT_TEMPIMPL(fun) fun
464 # define FLEXT_TEMPINST(fun) fun
465 # define FLEXT_TEMPSUB(fun) fun
466 # define FLEXT_TEMP_TYPENAME