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_OS_UNKNOWN 0
41#define FLEXT_OS_LINUX 3
42#define FLEXT_OS_IRIX 4
45#define FLEXT_OSAPI_UNKNOWN 0
47#define FLEXT_OSAPI_UNIX_POSIX 1
49#define FLEXT_OSAPI_MAC_CLASSIC 2
50#define FLEXT_OSAPI_MAC_CARBON 3
51#define FLEXT_OSAPI_MAC_MACH 4
53#define FLEXT_OSAPI_WIN_NATIVE 5
54#define FLEXT_OSAPI_WIN_POSIX 6
57#define FLEXT_CPU_UNKNOWN 0
58#define FLEXT_CPU_IA32 1
59#define FLEXT_CPU_PPC 2
60#define FLEXT_CPU_MIPS 3
61#define FLEXT_CPU_ALPHA 4
63#define FLEXT_CPU_IA64 5
64#define FLEXT_CPU_X86_64 6
65#define FLEXT_CPU_PPC64 7
68#define FLEXT_CPU_INTEL FLEXT_CPU_IA32
71#define FLEXT_THR_POSIX 1
72#define FLEXT_THR_WIN32 2
80 #define FLEXT_SYS FLEXT_SYS_MAX
83 #define FLEXT_SYS FLEXT_SYS_PD
89#if defined(_DEBUG) && !defined(FLEXT_DEBUG)
96#if FLEXT_SYS == FLEXT_SYS_MAX || FLEXT_SYS == FLEXT_SYS_PD
98 #error "System must be defined by either FLEXT_SYS_MAX or FLEXT_SYS_PD"
102#if defined(_MSC_VER) || (defined(__ICC) && (FLEXT_OS == FLEXT_OS_WIN || defined(_WIN32)))
107 #if defined(_M_AMD64)
108 #define FLEXT_CPU FLEXT_CPU_X86_64
109 #elif defined(_M_IA64)
110 #define FLEXT_CPU FLEXT_CPU_IA64
111 #elif defined(_M_IX86)
112 #define FLEXT_CPU FLEXT_CPU_IA32
113 #elif defined(_M_PPC)
114 #define FLEXT_CPU FLEXT_CPU_PPC
115 #elif defined(_M_MRX000)
116 #define FLEXT_CPU FLEXT_CPU_MIPS
117 #elif defined(_M_ALPHA)
118 #define FLEXT_CPU FLEXT_CPU_ALPHA
120 #define FLEXT_CPU FLEXT_CPU_UNKNOWN
125 #if defined(_WIN32) || defined(_WIN64)
126 #define FLEXT_OS FLEXT_OS_WIN
127 #define FLEXT_OSAPI FLEXT_OSAPI_WIN_NATIVE
129 #define FLEXT_OS FLEXT_OS_UNKNOWN
130 #define FLEXT_OSAPI FLEXT_OSAPI_UNKNOWN
135#elif defined(__BORLANDC__)
139 #define FLEXT_CPU FLEXT_CPU_INTEL
142 #define FLEXT_OS FLEXT_OS_WIN
143 #define FLEXT_OSAPI FLEXT_OSAPI_WIN_NATIVE
145 #define FLEXT_OSAPI FLEXT_OSAPI_UNKNOWN
149#elif defined(__MWERKS__)
156 #define TARGET_CPU_PPC64 1
158 #define TARGET_CPU_PPC 1
162 #define TARGET_CPU_X86_64 1
164 #define TARGET_CPU_IA32 1
167 #define TARGET_OS_MAC 1
168 #define TARGET_API_MAC_OSX 1
170 #ifndef __CONDITIONALMACROS__
171 #include <ConditionalMacros.h>
176 #if TARGET_CPU_X86_64
177 #define FLEXT_CPU FLEXT_CPU_X86_64
179 #define FLEXT_CPU FLEXT_CPU_IA32
180 #elif TARGET_CPU_PPC64
181 #define FLEXT_CPU FLEXT_CPU_PPC64
183 #define FLEXT_CPU FLEXT_CPU_PPC
184 #elif TARGET_CPU_MIPS
185 #define FLEXT_CPU FLEXT_CPU_MIPS
186 #elif TARGET_CPU_ALPHA
187 #define FLEXT_CPU FLEXT_CPU_ALPHA
189 #define FLEXT_CPU FLEXT_CPU_UNKNOWN
195 #define FLEXT_OS FLEXT_OS_MAC
196 #elif TARGET_OS_WIN32
198 #define FLEXT_OS FLEXT_OS_WIN
200 #define FLEXT_OS FLEXT_OS_UNKNOWN
205 #if TARGET_API_MAC_MACH
208 #define FLEXT_OSAPI FLEXT_OSAPI_MAC_MACH
209 #elif TARGET_API_MAC_CARBON
211 #define FLEXT_OSAPI FLEXT_OSAPI_MAC_CARBON
213 #define FLEXT_OSAPI FLEXT_OSAPI_UNKNOWN
218 #pragma enumsalwaysint on
222#elif defined(__GNUG__) || (defined(__ICC) && (FLEXT_OS == FLEXT_OS_LINUX || defined(linux) || defined(__linux__)))
228 #if defined(__x86_64__)
229 #define FLEXT_CPU FLEXT_CPU_X86_64
230 #elif defined(_X86_) || defined(__i386__) || defined(__i586__) || defined(__i686__)
231 #define FLEXT_CPU FLEXT_CPU_IA32
232 #elif defined(__ppc64__)
233 #define FLEXT_CPU FLEXT_CPU_PPC64
234 #elif defined(__ppc__)
235 #define FLEXT_CPU FLEXT_CPU_PPC
236 #elif defined(__MIPS__)
237 #define FLEXT_CPU FLEXT_CPU_MIPS
239 #define FLEXT_CPU FLEXT_CPU_UNKNOWN
244 #if defined(linux) || defined(__linux__) || defined(__FreeBSD_kernel__) || defined(__GNU__)
245 #define FLEXT_OS FLEXT_OS_LINUX
246 #elif defined(__CYGWIN__) || defined(__CYGWIN32__) || defined(__MINGW32__)
247 #define FLEXT_OS FLEXT_OS_WIN
248 #elif defined(__APPLE__) && defined(__MACH__)
249 #define FLEXT_OS FLEXT_OS_MAC
252 #define FLEXT_OS FLEXT_OS_UNKNOWN
257 #if FLEXT_OS == FLEXT_OS_MAC
258 #define FLEXT_OSAPI FLEXT_OSAPI_MAC_MACH
259 #elif FLEXT_OS == FLEXT_OS_WIN
260 #if defined(__MINGW32__)
261 #define FLEXT_OSAPI FLEXT_OSAPI_WIN_NATIVE
263 #define FLEXT_OSAPI FLEXT_OSAPI_WIN_POSIX
265 #elif FLEXT_OS == FLEXT_OS_LINUX || FLEXT_OS == FLEXT_OS_IRIX
266 #define FLEXT_OSAPI FLEXT_OSAPI_UNIX_POSIX
268 #define FLEXT_OSAPI FLEXT_OSAPI_UNKNOWN
272#elif defined(__MRC__) && defined(MPW_CPLUS)
276 #error Apple MPW MrCpp v.5.0.0 or later compiler required
280 #if defined(__POWERPC__)
281 #define FLEXT_CPU FLEXT_CPU_PPC
283 #define FLEXT_CPU FLEXT_CPU_UNKNOWN
288 #if defined(macintosh)
289 #define FLEXT_OS FLEXT_OS_MAC
291 #define FLEXT_OS FLEXT_OS_UNKNOWN
296 #if FLEXT_OS == FLEXT_OS_MAC
297 #define FLEXT_OSAPI FLEXT_OSAPI_MAC_CLASSIC
299 #define FLEXT_OSAPI FLEXT_OSAPI_UNKNOWN
306#if FLEXT_OS == FLEXT_OS_WIN
309 #if FLEXT_SYS == FLEXT_SYS_MAX
311 #elif FLEXT_SYS == FLEXT_SYS_PD
315#elif FLEXT_OS == FLEXT_OS_LINUX
318 #if FLEXT_SYS == FLEXT_SYS_PD
321 #error "Flext SYS/OS combination unknown"
323#elif FLEXT_OS == FLEXT_OS_IRIX
326 #if FLEXT_SYS == FLEXT_SYS_PD
329 #error "Flext SYS/OS combination unknown"
331#elif FLEXT_OS == FLEXT_OS_MAC
334 #if FLEXT_SYS == FLEXT_SYS_PD
338 #error "Operating system could not be determined"
341#if FLEXT_SYS == FLEXT_SYS_MAX
344 #if FLEXT_CPU == FLEXT_CPU_X86_64
350#elif FLEXT_SYS == FLEXT_SYS_PD
358 #define FLEXT_THREADS
363 #if FLEXT_SYS == FLEXT_SYS_MAX && FLEXT_OS == FLEXT_OS_MAC && FLEXT_OSAPI != FLEXT_OSAPI_MAC_MACH
365 #define FLEXT_THREADS FLEXT_THR_MP
366 #elif FLEXT_SYS == FLEXT_SYS_MAX && FLEXT_OS == FLEXT_OS_WIN
368 #define FLEXT_THREADS FLEXT_THR_WIN32
370 #define FLEXT_THREADS FLEXT_THR_POSIX
381 #define FLEXT_CLASSDEF(CL) CL
382#elif defined(FLEXT_DEBUG)
383 #if defined(FLEXT_SHARED)
384 #define FLEXT_CLASSDEF(CL) CL##_shared_d
385 #elif defined(FLEXT_THREADS)
386 #define FLEXT_CLASSDEF(CL) CL##_multi_d
388 #define FLEXT_CLASSDEF(CL) CL##_single_d
391 #if defined(FLEXT_SHARED)
392 #define FLEXT_CLASSDEF(CL) CL##_shared
393 #elif defined(FLEXT_THREADS)
394 #define FLEXT_CLASSDEF(CL) CL##_multi
396 #define FLEXT_CLASSDEF(CL) CL##_single
407 #define FLEXT_SHARE __declspec(dllexport)
409 #define FLEXT_SHARE __declspec(dllimport)
414 #define FLEXT_EXT __declspec(dllexport)
431# define LIKELY(expression) (__builtin_expect(!!(expression), 1))
434# define UNLIKELY(expression) (__builtin_expect(!!(expression), 0))
438# define LIKELY(expression) (expression)
441# define UNLIKELY(expression) (expression)
447# define FLEXT_TEMPLATE template<typename flext_T>
448# define FLEXT_TEMPIMPL(fun) template<typename flext_T> fun<flext_T>
449# define FLEXT_TEMPINST(fun) fun<void>
450# define FLEXT_TEMPSUB(fun) typename fun<flext_T>
451# define FLEXT_TEMP_TYPENAME typename
453# define FLEXT_TEMPLATE
454# define FLEXT_TEMPIMPL(fun) fun
455# define FLEXT_TEMPINST(fun) fun
456# define FLEXT_TEMPSUB(fun) fun
457# define FLEXT_TEMP_TYPENAME