#ifndef COMPAT_H #define COMPAT_H // Various macros to enable compiling with other/newer compilers. #if defined(__MINGW32__) || (defined(_MSC_VER) && _MSC_VER >= 1100) #define COMPAT_MODE #endif // Use `COMPAT_CONST` where something ought to be 'const', and a newer compiler would complain if it // wasn't, but we know it isn't 'const' in the original code. #if defined(__MINGW32__) || (defined(_MSC_VER) && _MSC_VER >= 1100) #define COMPAT_CONST const #else #define COMPAT_CONST #endif // DWORD_PTR didn't exist in older Windows SDKs #if (defined(_MSC_VER) && _MSC_VER < 1100) typedef unsigned long DWORD_PTR, *PDWORD_PTR; #endif // Disable "identifier was truncated to '255' characters" warning. // Impossible to avoid this if using STL map or set. // This removes most (but not all) occurrences of the warning. #pragma warning(disable : 4786) #define MSVC420_VERSION 1020 // We use `override` so newer compilers can tell us our vtables are valid, // however this keyword was added in C++11, so we define it as empty for // compatibility with older compilers. #if __cplusplus < 201103L #define override #define static_assert(expr, msg) #endif #endif // COMPAT_H