15 #if defined(__APPLE__) 
   19 #if defined(__BEOS__) || defined(__HAIKU__) 
   20   #include <SupportDefs.h> 
   25 #elif defined(__NDS__) 
   26   #include <nds/jtypes.h> 
   34 #if !defined(__APPLE__) && (!defined(_MSC_VER) || _MSC_VER >= 1600) && !defined(__MORPHOS__) 
   40     #define __STDC_LIMIT_MACROS 
   46 #if !defined(UINT64_MAX) 
   47   #define UINT64_MAX (18446744073709551615ULL) 
   49 #if !defined(INT64_MAX) 
   50   #define INT64_MAX  (9223372036854775807LL) 
   52 #if !defined(INT64_MIN) 
   53   #define INT64_MIN  (-INT64_MAX - 1) 
   55 #if !defined(UINT32_MAX) 
   56   #define UINT32_MAX (4294967295U) 
   58 #if !defined(INT32_MAX) 
   59   #define INT32_MAX  (2147483647) 
   61 #if !defined(INT32_MIN) 
   62   #define INT32_MIN  (-INT32_MAX - 1) 
   64 #if !defined(UINT16_MAX) 
   65   #define UINT16_MAX (65535U) 
   67 #if !defined(INT16_MAX) 
   68   #define INT16_MAX  (32767) 
   70 #if !defined(INT16_MIN) 
   71   #define INT16_MIN  (-INT16_MAX - 1) 
   73 #if !defined(UINT8_MAX) 
   74   #define UINT8_MAX  (255) 
   76 #if !defined(INT8_MAX) 
   77   #define INT8_MAX   (127) 
   79 #if !defined(INT8_MIN) 
   80   #define INT8_MIN   (-INT8_MAX - 1) 
   91   #define SIZE_MAX ((size_t)-1) 
   94 #if defined(UNIX) || defined(__MINGW32__) 
   95   #include <sys/types.h> 
  100   #define strcasecmp stricmp 
  104   #include <psptypes.h> 
  105   #include <pspdebug.h> 
  106   #include <pspthreadman.h> 
  109 #if defined(SUNOS) || defined(HPUX) 
  113 #if defined(__MORPHOS__) 
  120   #if defined(__amigaos__) 
  123   #if defined(__AMIGA__) 
  134   #define CLIB_USERGROUP_PROTOS_H 
  141   #define LIMITED_FDS 8 
  142   #define printf pspDebugScreenPrintf 
  146 #if defined(__GNUC__) 
  147   #define NORETURN __attribute__ ((noreturn)) 
  149   #define __int64 long long 
  150   #define GCC_PACK __attribute__((packed)) 
  153   #define WARN_FORMAT(string, args) __attribute__ ((format (printf, string, args))) 
  154   #if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7) 
  161 #if defined(__WATCOMC__) 
  165   #define WARN_FORMAT(string, args) 
  170 #if defined(__MINGW32__) || defined(__CYGWIN__) 
  175   #define WIN32_LEAN_AND_MEAN     // Exclude rarely-used stuff from Windows headers 
  179 #if defined(_MSC_VER) 
  183     #define NTDDI_VERSION NTDDI_WINXP // Windows XP 
  184     #define _WIN32_WINNT 0x501        // Windows XP 
  185     #define _WIN32_WINDOWS 0x501      // Windows XP 
  186     #define WINVER 0x0501             // Windows XP 
  187     #define _WIN32_IE_ 0x0600         // 6.0 (XP+) 
  191     #define NTDDI_VERSION NTDDI_WIN2K // Windows 2000 
  192     #define _WIN32_WINNT 0x0500       // Windows 2000 
  193     #define _WIN32_WINDOWS 0x400      // Windows 95 
  195       #define WINVER 0x0400     // Windows NT 4.0 / Windows 95 
  197     #define _WIN32_IE_ 0x0401         // 4.01 (win98 and NT4SP5+) 
  199   #define NOMINMAX                // Disable min/max macros in windows.h. 
  201   #pragma warning(disable: 4244)  // 'conversion' conversion from 'type1' to 'type2', possible loss of data 
  202   #pragma warning(disable: 4761)  // integral size mismatch in argument : conversion supplied 
  203   #pragma warning(disable: 4200)  // nonstandard extension used : zero-sized array in struct/union 
  204   #pragma warning(disable: 4355)  // 'this' : used in base member initializer list 
  206   #if (_MSC_VER < 1400)                   // MSVC 2005 safety checks 
  207     #error "Only MSVC 2005 or higher are supported. MSVC 2003 and earlier are not! Upgrade your compiler." 
  209   #pragma warning(disable: 4291)   // no matching operator delete found; memory will not be freed if initialization throws an exception (reason: our overloaded functions never throw an exception) 
  210   #pragma warning(disable: 4996)   // 'function': was declared deprecated 
  211   #define _CRT_SECURE_NO_DEPRECATE // all deprecated 'unsafe string functions 
  212   #pragma warning(disable: 6308)   // code analyzer: 'realloc' might return null pointer: assigning null pointer to 't_ptr', which is passed as an argument to 'realloc', will cause the original memory block to be leaked 
  213   #pragma warning(disable: 6011)   // code analyzer: Dereferencing NULL pointer 'pfGetAddrInfo': Lines: 995, 996, 998, 999, 1001 
  214   #pragma warning(disable: 6326)   // code analyzer: potential comparison of a constant with another constant 
  215   #pragma warning(disable: 6031)   // code analyzer: Return value ignored: 'ReadFile' 
  216   #pragma warning(disable: 6255)   // code analyzer: _alloca indicates failure by raising a stack overflow exception. Consider using _malloca instead 
  217   #pragma warning(disable: 6246)   // code analyzer: Local declaration of 'statspec' hides declaration of the same name in outer scope. For additional information, see previous declaration at ... 
  219   #if (_MSC_VER == 1500)           // Addresses item #13 on http://blogs.msdn.com/b/vcblog/archive/2008/08/11/tr1-fixes-in-vc9-sp1.aspx, for Visual Studio 2008 
  220     #define _DO_NOT_DECLARE_INTERLOCKED_INTRINSICS_IN_MEMORY 
  225   #define NORETURN __declspec(noreturn) 
  226   #if (_MSC_VER < 1900) 
  227     #define inline __forceinline 
  235   #define WARN_FORMAT(string, args) 
  239     int CDECL vsnprintf(
char *str, 
size_t size, 
const char *format, va_list ap);
 
  242   #if defined(WIN32) && !defined(_WIN64) && !defined(WIN64) 
  247     typedef _W64 
int INT_PTR, *PINT_PTR;
 
  248     typedef _W64 
unsigned int UINT_PTR, *PUINT_PTR;
 
  251   #if defined(_WIN64) || defined(WIN64) 
  252     #define fseek _fseeki64 
  256   #if defined(WITH_ZLIB) || defined(WITH_PNG) 
  257     #if !defined(ZLIB_WINAPI) 
  263     #define strcasecmp _stricmp 
  264     #define strncasecmp _strnicmp 
  267     #define strcasecmp stricmp 
  268     #define strncasecmp strnicmp 
  271   #define strtoull _strtoui64 
  274   #define S_ISDIR(mode) (mode & S_IFDIR) 
  275   #define S_ISREG(mode) (mode & S_IFREG) 
  281   #define strsignal(sig) "" 
  285   #define SIGBUS SIGNOFP 
  289   #define stredup _stredup 
  294 #if !defined(STRGEN) && !defined(SETTINGSGEN) 
  295   #if defined(WIN32) || defined(WIN64) 
  296     char *getcwd(
char *buf, 
size_t size);
 
  302       namespace std { using ::_tfopen; }
 
  303       #define fopen(file, mode) _tfopen(OTTD2FS(file), _T(mode)) 
  304       #define unlink(file) _tunlink(OTTD2FS(file)) 
  307     const char *
FS2OTTD(
const TCHAR *name);
 
  308     const TCHAR *
OTTD2FS(
const char *name, 
bool console_cp = 
false);
 
  310     #define fopen(file, mode) fopen(OTTD2FS(file), mode) 
  311     const char *
FS2OTTD(
const char *name);
 
  312     const char *
OTTD2FS(
const char *name);
 
  316 #if defined(WIN32) || defined(WIN64) || defined(__OS2__) && !defined(__INNOTEK_LIBC__) 
  318   #define PATHSEPCHAR '\\' 
  321   #define PATHSEPCHAR '/' 
  325 #if defined(_MSC_VER) || defined(__MINGW32__) 
  326   #define OTTD_PRINTF64 "%I64d" 
  327   #define OTTD_PRINTFHEX64 "%I64x" 
  328   #define PRINTF_SIZE "%Iu" 
  330   #define OTTD_PRINTF64 "%lld" 
  331   #define OTTD_PRINTFHEX64 "%llx" 
  332   #define PRINTF_SIZE "%zu" 
  335 typedef unsigned char byte;
 
  338 #if (!defined(UNIX) && !defined(__CYGWIN__) && !defined(__BEOS__) && !defined(__HAIKU__) && !defined(__MORPHOS__)) || defined(__QNXNTO__) 
  339   typedef unsigned int uint;
 
  342 #if defined(TROUBLED_INTS) 
  345   #define uint32 uint32_ugly_hack 
  346   #define int32 int32_ugly_hack 
  347   typedef unsigned int uint32_ugly_hack;
 
  348   typedef signed int int32_ugly_hack;
 
  350   typedef unsigned char    uint8;
 
  351   typedef   signed char     int8;
 
  352   typedef unsigned short   uint16;
 
  353   typedef   signed short    int16;
 
  354   typedef unsigned int     uint32;
 
  355   typedef   signed int      int32;
 
  356   typedef unsigned __int64 uint64;
 
  357   typedef   signed __int64  int64;
 
  360 #if !defined(WITH_PERSONAL_DIR) 
  361   #define PERSONAL_DIR "" 
  367 #if defined(__STDCXX_VERSION__) || defined(__GXX_EXPERIMENTAL_CXX0X__) || defined(__GXX_EXPERIMENTAL_CPP0X__) || defined(static_assert) 
  369   #define assert_compile(expr) static_assert(expr, #expr ) 
  370   #define assert_tcompile(expr) assert_compile(expr) 
  371 #elif defined(__OS2__) 
  373   #define assert_compile(expr) 
  374   #define assert_tcompile(expr) assert_compile(expr) 
  376   #define assert_compile(expr) typedef int __ct_assert__[1 - 2 * !(expr)] 
  377   #define assert_tcompile(expr) assert(expr) 
  381 assert_compile(
sizeof(uint64) == 8);
 
  382 assert_compile(
sizeof(uint32) == 4);
 
  383 assert_compile(
sizeof(uint16) == 2);
 
  384 assert_compile(
sizeof(uint8)  == 1);
 
  385 assert_compile(SIZE_MAX >= UINT32_MAX);
 
  388 #define M_PI_2 1.57079632679489661923 
  389 #define M_PI   3.14159265358979323846 
  400 #define lengthof(x) (sizeof(x) / sizeof(x[0])) 
  408 #define endof(x) (&x[lengthof(x)]) 
  416 #define lastof(x) (&x[lengthof(x) - 1]) 
  418 #define cpp_offsetof(s, m)   (((size_t)&reinterpret_cast<const volatile char&>((((s*)(char*)8)->m))) - 8) 
  419 #if !defined(offsetof) 
  420   #define offsetof(s, m) cpp_offsetof(s, m) 
  429 #define cpp_sizeof(base, variable) (sizeof(((base*)8)->variable)) 
  437 #define cpp_lengthof(base, variable) (cpp_sizeof(base, variable) / cpp_sizeof(base, variable[0])) 
  441 #if defined(__APPLE__) 
  442   #define GetString OTTD_GetString 
  443   #define DrawString OTTD_DrawString 
  444   #define CloseConnection OTTD_CloseConnection 
  447 void NORETURN CDECL 
usererror(
const char *str, ...) WARN_FORMAT(1, 2);
 
  448 void NORETURN CDECL 
error(const 
char *str, ...) WARN_FORMAT(1, 2);
 
  449 #define NOT_REACHED() error("NOT_REACHED triggered at line %i of %s", __LINE__, __FILE__) 
  455 #if (defined(_MSC_VER) && defined(NDEBUG) && defined(WITH_ASSERT)) || (!defined(_MSC_VER) && !defined(NDEBUG) && !defined(_DEBUG)) 
  457   #define assert(expression) if (!(expression)) error("Assertion failed at line %i of %s: %s", __LINE__, __FILE__, #expression); 
  461 #if !defined(NDEBUG) || (defined(_MSC_VER) && defined(WITH_ASSERT)) 
  465 #if defined(MORPHOS) || defined(__NDS__) || defined(__DJGPP__) 
  467   #define _stricmp stricmp 
  468 #elif defined(OPENBSD) 
  470   #define _stricmp strcasecmp 
  473 #if defined(MAX_PATH) 
  475 #elif defined(PATH_MAX) && PATH_MAX > 0 
  477   #define MAX_PATH PATH_MAX 
  487 static inline void free(
const void *ptr)
 
  489   free(const_cast<void *>(ptr));
 
  496 #define MAX_UVALUE(type) ((type)~(type)0) 
  498 #if defined(_MSC_VER) && !defined(_DEBUG) 
  499   #define IGNORE_UNINITIALIZED_WARNING_START __pragma(warning(push)) __pragma(warning(disable:4700)) 
  500   #define IGNORE_UNINITIALIZED_WARNING_STOP __pragma(warning(pop)) 
  501 #elif defined(__GNUC__) && !defined(_DEBUG) 
  502   #define HELPER0(x) #x 
  503   #define HELPER1(x) HELPER0(GCC diagnostic ignored x) 
  504   #define HELPER2(y) HELPER1(#y) 
  505 #if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)) 
  506   #define IGNORE_UNINITIALIZED_WARNING_START \ 
  507     _Pragma("GCC diagnostic push") \ 
  508     _Pragma(HELPER2(-Wuninitialized)) \ 
  509     _Pragma(HELPER2(-Wmaybe-uninitialized)) 
  510   #define IGNORE_UNINITIALIZED_WARNING_STOP _Pragma("GCC diagnostic pop") 
  514 #ifndef IGNORE_UNINITIALIZED_WARNING_START 
  515   #define IGNORE_UNINITIALIZED_WARNING_START 
  516   #define IGNORE_UNINITIALIZED_WARNING_STOP