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
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
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
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
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