20 #ifndef __Thea_Platform_hpp__ 21 #define __Thea_Platform_hpp__ 25 #define WIN32_LEAN_AND_MEAN 27 #if !defined(THEA_DEBUG_BUILD) && (!defined(NDEBUG) || defined(_DEBUG)) 28 # define THEA_DEBUG_BUILD 32 #if !defined(THEA_DEBUG_BUILD) && !defined(NDEBUG) 37 # define THEA_WINDOWS 1 45 # pragma warning( disable: 4251 ) 46 # pragma warning( disable: 4275 ) 49 # pragma warning( disable: 4244 ) 51 #elif defined(__FreeBSD__) 52 # define THEA_FREEBSD 1 53 #elif defined(__OpenBSD__) 54 # define THEA_OPENBSD 1 55 #elif defined(__linux__) 57 #elif defined(__APPLE__) 64 # error Unknown platform 67 #if defined(THEA_FREEBSD) || defined(THEA_OPENBSD) 73 #if defined(_M_X64) || defined(__x86_64__) || defined(__amd_64__) 76 #elif defined(_M_IA64) || defined(__ia64) || defined(__ia64__) 78 # define THEA_ITANIUM 1 79 #elif defined(__i386) || defined(_M_IX86) 82 #elif defined(__aarch64__) || defined(__aarch64) 85 #elif defined(_M_ARM) || defined(__arm) || defined(__arm__) 88 #elif defined(__powerpc__) || defined(__PPC__) || defined(__POWERPC__) 89 # if defined(__ppc64__) || defined(__powerpc64__) || defined(__64BIT__) || defined(_LP64) 94 # define THEA_POWERPC 1 98 #include "SymbolVisibility.hpp" 101 #if defined(_MSC_VER) && defined(THEA_32BIT) // also clang and icc on Windows? 102 # if defined(__GNUC__) 103 # define THEA_CDECL __attribute__((cdecl)) 104 # define THEA_STDCALL __attribute__((stdcall)) 106 # define THEA_CDECL __cdecl 107 # define THEA_STDCALL __stdcall 111 # define THEA_STDCALL 115 #define THEA_ICALL THEA_STDCALL 123 # define THEA_PRAGMA(x) __pragma(x) 126 # define THEA_PRAGMA(x) _Pragma(#x) 131 # define THEA_BEGIN_PACKED_CLASS(byte_align) THEA_PRAGMA( pack(push, byte_align) ) 133 # define THEA_BEGIN_PACKED_CLASS(byte_align) 138 # define THEA_END_PACKED_CLASS(byte_align) ; THEA_PRAGMA( pack(pop) ) 139 #elif defined(__GNUC__) 140 # define THEA_END_PACKED_CLASS(byte_align) __attribute__((aligned(byte_align))) ; 142 # define THEA_END_PACKED_CLASS(byte_align) ; std::ptrdiff_t intx
A signed integer suitable for indexing a structure held in memory.
std::size_t uintx
An unsigned integer suitable for indexing a structure held in memory.
Root namespace for the Thea library.