2023-07-02 02:53:54 -04:00
|
|
|
#ifndef ISLECOMPAT_H
|
|
|
|
#define ISLECOMPAT_H
|
|
|
|
|
|
|
|
// Various macros to enable compiling with other/newer compilers.
|
|
|
|
|
|
|
|
// 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.
|
|
|
|
#ifdef __MINGW32__
|
|
|
|
#define COMPAT_CONST const
|
|
|
|
#else
|
|
|
|
#define COMPAT_CONST
|
|
|
|
#endif
|
|
|
|
|
2023-08-06 13:52:37 -04:00
|
|
|
// DIsable "nonstandard extension used : 'bool'" warning spam
|
|
|
|
#pragma warning( disable : 4237 )
|
|
|
|
|
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.
|
|
|
|
#pragma warning( disable : 4786 )
|
2023-10-07 13:28:52 -04:00
|
|
|
// To really remove *all* of the warnings, we have to employ the following,
|
|
|
|
// obscure workaround from https://www.earthli.com/news/view_article.php?id=376
|
|
|
|
static class msVC6_4786WorkAround { public: msVC6_4786WorkAround() {} } msVC6_4786WorkAround;
|
2023-08-16 13:09:44 -04:00
|
|
|
|
2023-07-16 02:43:08 -04:00
|
|
|
#define MSVC420_VERSION 1020
|
|
|
|
|
|
|
|
// STL compatibility.
|
|
|
|
#if defined(_MSC_VER) && _MSC_VER <= MSVC420_VERSION
|
2023-08-12 13:32:43 -04:00
|
|
|
#include "mxstl.h"
|
2023-07-16 02:43:08 -04:00
|
|
|
#else
|
|
|
|
#include <algorithm>
|
|
|
|
#include <list>
|
2023-08-16 13:09:44 -04:00
|
|
|
#include <set>
|
2023-07-16 02:43:08 -04:00
|
|
|
using namespace std;
|
|
|
|
#endif
|
|
|
|
|
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.
|
|
|
|
#if defined(_MSC_VER) && _MSC_VER <= 1200 // 1200 corresponds to VC6.0 but "override" was probably added even later
|
|
|
|
#define override
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#endif // ISLECOMPAT_H
|