truelight@0: #if !defined(_STDAFX_H) truelight@0: #define _STDAFX_H truelight@0: truelight@0: #if defined(_MSC_VER) truelight@0: #pragma once truelight@0: truelight@0: #define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers truelight@0: #pragma warning(disable: 4100) // parameter not used truelight@0: #pragma warning(disable: 4244) // conversion truelight@0: #pragma warning(disable: 4245) // conversion truelight@0: #pragma warning(disable: 4201) // nameless union truelight@0: #pragma warning(disable: 4514) // removed unref inline truelight@0: #pragma warning(disable: 4127) // constant conditional expression truelight@0: #pragma warning(disable: 4276) // MSVC BUG??? Complains about function body not declared when using function pointers truelight@0: #pragma warning(disable: 4761) // warning C4761: integral size mismatch in argument; conversion supplied truelight@0: #endif truelight@0: truelight@0: #include truelight@0: #include truelight@0: #include truelight@0: #include truelight@0: truelight@0: #if defined(UNIX) truelight@0: # include truelight@0: #endif truelight@0: truelight@0: #ifdef __BEOS__ truelight@0: #include truelight@0: #endif truelight@0: truelight@0: #define BSWAP32(x) ((((x) >> 24) & 0xFF) | (((x) >> 8) & 0xFF00) | (((x) << 8) & 0xFF0000) | (((x) << 24) & 0xFF000000)) truelight@0: #define BSWAP16(x) ((x) >> 8 | (x) << 8) truelight@0: truelight@0: // by default we use [] var arrays truelight@0: #define VARARRAY_SIZE truelight@0: truelight@0: truelight@0: // Stuff for GCC truelight@0: #if defined(__GNUC__) truelight@0: # define NORETURN truelight@0: # define FORCEINLINE inline truelight@0: # define INLINE inline truelight@0: # define CDECL truelight@0: //#include truelight@0: //#include truelight@0: # define __int64 long long truelight@0: # define NOT_REACHED() truelight@0: # define GCC_PACK __attribute__((packed)) truelight@0: truelight@0: # if (__GNUC__ == 2) truelight@0: # undef VARARRAY_SIZE truelight@0: # define VARARRAY_SIZE 0 truelight@0: # endif truelight@0: #endif truelight@0: truelight@0: // Stuff for MSVC truelight@0: #if defined(_MSC_VER) truelight@0: # include // alloca() truelight@0: # define NORETURN __declspec(noreturn) truelight@0: # define FORCEINLINE __forceinline truelight@0: # define INLINE _inline truelight@0: # define CDECL _cdecl truelight@0: # define NOT_REACHED() _assume(0) truelight@0: # define snprintf _snprintf truelight@0: # undef TTD_ALIGNMENT_4 truelight@0: # undef TTD_ALIGNMENT_2 truelight@0: # define GCC_PACK truelight@0: #endif truelight@0: truelight@0: #if defined(WIN32) truelight@0: # define TTD_LITTLE_ENDIAN truelight@0: #endif truelight@0: truelight@0: #if defined(i386) truelight@0: # define TTD_LITTLE_ENDIAN truelight@0: #endif truelight@0: truelight@0: #if defined(__MORPHOS__) truelight@0: # define TTD_BIG_ENDIAN truelight@0: #endif truelight@0: truelight@0: // Check endianness truelight@0: #if !defined(TTD_LITTLE_ENDIAN) && !defined(TTD_BIG_ENDIAN) truelight@0: # if defined(_BIG_ENDIAN) truelight@0: # define TTD_BIG_ENDIAN truelight@0: # elif defined(_LITTLE_ENDIAN) truelight@0: # define TTD_LITTLE_ENDIAN truelight@0: # else truelight@0: # error No endianness defined, use either TTD_LITTLE_ENDIAN or TTD_BIG_ENDIAN truelight@0: #endif truelight@0: #endif truelight@0: truelight@0: #if defined(UNIX) truelight@0: #define PATHSEP "/" truelight@0: #else truelight@0: #define PATHSEP "\\" truelight@0: #endif truelight@0: truelight@0: truelight@0: typedef unsigned char byte; truelight@0: #ifndef __BEOS__ // already defined truelight@0: typedef unsigned char uint8; truelight@0: typedef unsigned short uint16; truelight@0: typedef unsigned int uint32; truelight@0: #endif truelight@0: truelight@0: // This is already defined in unix truelight@0: #if !defined(UNIX) && !defined(__CYGWIN__) truelight@0: typedef unsigned int uint; truelight@0: #endif truelight@0: truelight@0: #if defined(_MSC_VER) truelight@0: #define memcpy_overlapping memcpy truelight@0: #else truelight@0: #define memcpy_overlapping memmove truelight@0: #endif truelight@0: truelight@0: #ifndef __BEOS__ truelight@0: typedef signed char int8; truelight@0: typedef signed short int16; truelight@0: typedef signed int int32; truelight@0: #ifndef __cplusplus truelight@0: typedef unsigned char bool; truelight@0: #endif truelight@0: typedef signed __int64 int64; truelight@0: typedef unsigned __int64 uint64; truelight@0: #endif truelight@0: truelight@0: // Setup alignment and conversion macros truelight@0: #if defined(TTD_BIG_ENDIAN) truelight@0: # define TTD_ALIGNMENT_2 truelight@0: # define TTD_ALIGNMENT_4 truelight@0: static uint32 INLINE TO_LE32(uint32 x) { return BSWAP32(x); } truelight@0: static uint16 INLINE TO_LE16(uint16 x) { return BSWAP16(x); } truelight@0: # define TO_BE32(x) x truelight@0: # define TO_BE16(x) x truelight@0: #define TO_BE32X(x) x truelight@0: #else truelight@0: # define TO_LE32(x) x truelight@0: # define TO_LE16(x) x truelight@0: #define TO_BE32X(x) BSWAP32(x) truelight@0: static uint32 FORCEINLINE TO_BE32(uint32 x) { return BSWAP32(x); } truelight@0: static uint16 FORCEINLINE TO_BE16(uint16 x) { return BSWAP16(x); } truelight@0: #endif truelight@0: truelight@0: #if !defined(GAME_DATA_DIR) truelight@0: #define GAME_DATA_DIR "" truelight@0: #endif truelight@0: truelight@0: #if !defined(PERSONAL_DIR) truelight@0: #define PERSONAL_DIR "" truelight@0: #endif truelight@0: truelight@0: #ifndef __cplusplus truelight@0: #ifndef __BEOS__ truelight@0: enum { truelight@0: false = 0, truelight@0: true = 1, truelight@0: }; truelight@0: #endif truelight@0: #endif truelight@0: truelight@0: // Compile time assertions truelight@0: #define assert_compile(expr) void __ct_assert__(int a[1 - 2 * !(expr)]); truelight@0: truelight@0: assert_compile(sizeof(uint32) == 4); truelight@0: assert_compile(sizeof(uint16) == 2); truelight@0: assert_compile(sizeof(uint8) == 1); truelight@0: truelight@0: #define lengthof(x) (sizeof(x)/sizeof(x[0])) truelight@0: #define endof(x) (&x[lengthof(x)]) truelight@0: #ifndef offsetof truelight@0: #define offsetof(s,m) (size_t)&(((s *)0)->m) truelight@0: #endif truelight@0: truelight@0: truelight@0: // take care of some name clashes on macos truelight@0: #if defined(__APPLE__) truelight@0: #define GetString OTTD_GetString truelight@0: #define DrawString OTTD_DrawString truelight@0: #define Random OTTD_Random truelight@0: #endif truelight@0: truelight@0: #endif // !defined(_STDAFX_H)