2023-12-11 16:33:46 -05:00
|
|
|
#ifndef COMPAT_H
|
|
|
|
#define COMPAT_H
|
2023-07-02 02:53:54 -04:00
|
|
|
|
|
|
|
// Various macros to enable compiling with other/newer compilers.
|
|
|
|
|
2024-01-10 17:34:32 -05:00
|
|
|
#if defined(__MINGW32__) || (defined(_MSC_VER) && _MSC_VER >= 1100)
|
2024-01-06 12:56:15 -05:00
|
|
|
#define COMPAT_MODE
|
|
|
|
#endif
|
|
|
|
|
2023-07-02 02:53:54 -04:00
|
|
|
// 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.
|
2024-01-10 17:34:32 -05:00
|
|
|
#if defined(__MINGW32__) || (defined(_MSC_VER) && _MSC_VER >= 1100)
|
2023-07-02 02:53:54 -04:00
|
|
|
#define COMPAT_CONST const
|
|
|
|
#else
|
|
|
|
#define COMPAT_CONST
|
|
|
|
#endif
|
|
|
|
|
2024-01-18 13:23:13 -05:00
|
|
|
// DWORD_PTR didn't exist in older Windows SDKs
|
|
|
|
#if (defined(_MSC_VER) && _MSC_VER < 1100)
|
|
|
|
typedef unsigned long DWORD_PTR, *PDWORD_PTR;
|
|
|
|
#endif
|
|
|
|
|
2023-08-16 13:09:44 -04:00
|
|
|
// 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.
|
2023-10-24 19:38:27 -04:00
|
|
|
#pragma warning(disable : 4786)
|
2023-08-16 13:09:44 -04:00
|
|
|
|
2023-07-16 02:43:08 -04:00
|
|
|
#define MSVC420_VERSION 1020
|
|
|
|
|
2023-07-12 17:12:03 -04:00
|
|
|
// 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.
|
2024-01-03 15:53:21 -05:00
|
|
|
#if __cplusplus < 201103L
|
2023-07-12 17:12:03 -04:00
|
|
|
#define override
|
2024-01-03 15:53:21 -05:00
|
|
|
#define static_assert(expr, msg)
|
2023-07-12 17:12:03 -04:00
|
|
|
#endif
|
|
|
|
|
2023-12-11 16:33:46 -05:00
|
|
|
#endif // COMPAT_H
|