diff --git a/README.md b/README.md index 1688ed5..384b117 100644 --- a/README.md +++ b/README.md @@ -191,6 +191,7 @@ toml++ is licensed under the terms of the MIT license - see [LICENSE]. UTF-8 decoding is performed using a state machine based on Bjoern Hoehrmann's '[Flexible and Economical UTF-8 Decoder]'. ### With thanks to: +- **[@beastle9end](https://github.com/beastle9end)** - Made Windows.h include bypass - **[@bjadamson](https://github.com/bjadamson)** - Reported some bugs and helped design a new feature - **[@bobfang1992](https://github.com/bobfang1992)** - Reported a bug and created a [wrapper in python](https://github.com/bobfang1992/pytomlpp) - **[@GiulioRomualdi](https://github.com/GiulioRomualdi)** - Added cmake+meson support @@ -208,7 +209,7 @@ UTF-8 decoding is performed using a state machine based on Bjoern Hoehrmann's '[ - **[@traversaro](https://github.com/traversaro)** - Added vcpkg support and reported a bunch of bugs - **[@ximion](https://github.com/ximion)** - Added support for installation with meson - **[@whiterabbit963](https://github.com/whiterabbit963)** - Fixed a bug with value_or conversions -- **[@beastle9end](https://github.com/beastle9end)** - Made Windows.h include bypass +
# Contact diff --git a/docs/pages/main_page.dox b/docs/pages/main_page.dox index 6dfb750..832b1cd 100644 --- a/docs/pages/main_page.dox +++ b/docs/pages/main_page.dox @@ -380,7 +380,7 @@ /// \subsection mainpage-example-speed-up-compilation Speeding up compilation /// Because toml++ is a header-only library of nontrivial size you might find that compilation times noticeably /// increase after you add it to your project, especially if you add the library's header somewhere that's visible from -/// a large number of translation units. You can counter this by disabling 'all inline' mode and explicitly controlling +/// a large number of translation units. You can counter this by disabling header-only mode and explicitly controlling /// where the library's implementation is compiled. /// /// Step 1: Set \ref TOML_HEADER_ONLY to [code]0[/code] before including toml++ diff --git a/include/toml++/toml.h b/include/toml++/toml.h index fd2fa1f..b2e5e78 100644 --- a/include/toml++/toml.h +++ b/include/toml++/toml.h @@ -74,6 +74,7 @@ TOML_POP_WARNINGS; // TOML_DISABLE_SPAM_WARNINGS #undef TOML_CONSTEVAL #undef TOML_CPP #undef TOML_DISABLE_ARITHMETIC_WARNINGS + #undef TOML_DISABLE_CODE_ANALYSIS_WARNINGS #undef TOML_DISABLE_INIT_WARNINGS #undef TOML_DISABLE_SPAM_WARNINGS #undef TOML_DISABLE_SHADOW_WARNINGS diff --git a/include/toml++/toml_default_formatter.hpp b/include/toml++/toml_default_formatter.hpp index 91b4e91..c940311 100644 --- a/include/toml++/toml_default_formatter.hpp +++ b/include/toml++/toml_default_formatter.hpp @@ -204,19 +204,19 @@ TOML_NAMESPACE_END; // implementations of windows wide string nonsense #if TOML_WINDOWS_COMPAT -namespace winapi -{ - extern "C" - { - int __stdcall WideCharToMultiByte(unsigned int CodePage, unsigned long dwFlags, const wchar_t* lpWideCharStr, int cchWideChar, - const char* lpMultiByteStr, int cbMultiByte, const char* lpDefaultChar, int* lpUsedDefaultChar); - int __stdcall MultiByteToWideChar(unsigned int CodePage, unsigned long dwFlags, const char* lpMultiByteStr, int cbMultiByte, - const wchar_t* lpWideCharStr, int cchWideChar); - } -} - TOML_IMPL_NAMESPACE_START { + namespace winapi + { + extern "C" + { + int __stdcall WideCharToMultiByte(unsigned int CodePage, unsigned long dwFlags, const wchar_t* lpWideCharStr, int cchWideChar, + char* lpMultiByteStr, int cbMultiByte, const char* lpDefaultChar, int* lpUsedDefaultChar); + int __stdcall MultiByteToWideChar(unsigned int CodePage, unsigned long dwFlags, const char* lpMultiByteStr, int cbMultiByte, + wchar_t* lpWideCharStr, int cchWideChar); + } + } + TOML_API TOML_EXTERNAL_LINKAGE std::string narrow(std::wstring_view str) noexcept @@ -231,7 +231,7 @@ TOML_IMPL_NAMESPACE_START if (len) { s.resize(static_cast(len)); - winapi::WideCharToMultiByte(65001, 0, str.data(), static_cast(str.length()), s.data(), len, nullptr, nullptr); + winapi::WideCharToMultiByte(65001, 0, str.data(), static_cast(str.length()), s.data(), len, nullptr, nullptr); } return s; } @@ -248,7 +248,7 @@ TOML_IMPL_NAMESPACE_START if (len) { s.resize(static_cast(len)); - winapi::MultiByteToWideChar(65001, 0, str.data(), static_cast(str.length()), s.data(), len); + winapi::MultiByteToWideChar(65001, 0, str.data(), static_cast(str.length()), s.data(), len); } return s; } diff --git a/include/toml++/toml_preprocessor.h b/include/toml++/toml_preprocessor.h index fd9c192..b38537b 100644 --- a/include/toml++/toml_preprocessor.h +++ b/include/toml++/toml_preprocessor.h @@ -46,41 +46,55 @@ #define TOML_GCC 0 #endif +#ifdef __has_include + #define TOML_HAS_INCLUDE(header) __has_include(header) +#else + #define TOML_HAS_INCLUDE(header) 0 +#endif + //#==================================================================================================================== //# CLANG //#==================================================================================================================== #if TOML_CLANG - #define TOML_PUSH_WARNINGS _Pragma("clang diagnostic push") \ - static_assert(true) + #define TOML_PUSH_WARNINGS \ + _Pragma("clang diagnostic push") \ + static_assert(true) - #define TOML_DISABLE_SWITCH_WARNINGS _Pragma("clang diagnostic ignored \"-Wswitch\"") \ - static_assert(true) + #define TOML_DISABLE_SWITCH_WARNINGS \ + _Pragma("clang diagnostic ignored \"-Wswitch\"") \ + static_assert(true) - #define TOML_DISABLE_INIT_WARNINGS _Pragma("clang diagnostic ignored \"-Wmissing-field-initializers\"") \ - static_assert(true) + #define TOML_DISABLE_INIT_WARNINGS \ + _Pragma("clang diagnostic ignored \"-Wmissing-field-initializers\"") \ + static_assert(true) - #define TOML_DISABLE_ARITHMETIC_WARNINGS _Pragma("clang diagnostic ignored \"-Wfloat-equal\"") \ - _Pragma("clang diagnostic ignored \"-Wdouble-promotion\"") \ - _Pragma("clang diagnostic ignored \"-Wchar-subscripts\"") \ - _Pragma("clang diagnostic ignored \"-Wshift-sign-overflow\"") \ - static_assert(true) + #define TOML_DISABLE_ARITHMETIC_WARNINGS \ + _Pragma("clang diagnostic ignored \"-Wfloat-equal\"") \ + _Pragma("clang diagnostic ignored \"-Wdouble-promotion\"") \ + _Pragma("clang diagnostic ignored \"-Wchar-subscripts\"") \ + _Pragma("clang diagnostic ignored \"-Wshift-sign-overflow\"") \ + static_assert(true) - #define TOML_DISABLE_SHADOW_WARNINGS _Pragma("clang diagnostic ignored \"-Wshadow\"") \ - static_assert(true) + #define TOML_DISABLE_SHADOW_WARNINGS \ + _Pragma("clang diagnostic ignored \"-Wshadow\"") \ + static_assert(true) - #define TOML_DISABLE_SPAM_WARNINGS _Pragma("clang diagnostic ignored \"-Wweak-vtables\"") \ - _Pragma("clang diagnostic ignored \"-Wweak-template-vtables\"") \ - _Pragma("clang diagnostic ignored \"-Wpadded\"") \ - static_assert(true) + #define TOML_DISABLE_SPAM_WARNINGS \ + _Pragma("clang diagnostic ignored \"-Wweak-vtables\"") \ + _Pragma("clang diagnostic ignored \"-Wweak-template-vtables\"") \ + _Pragma("clang diagnostic ignored \"-Wpadded\"") \ + static_assert(true) - #define TOML_POP_WARNINGS _Pragma("clang diagnostic pop") \ - static_assert(true) + #define TOML_POP_WARNINGS \ + _Pragma("clang diagnostic pop") \ + static_assert(true) - #define TOML_DISABLE_WARNINGS TOML_PUSH_WARNINGS; \ - _Pragma("clang diagnostic ignored \"-Weverything\"") \ - static_assert(true) + #define TOML_DISABLE_WARNINGS \ + TOML_PUSH_WARNINGS; \ + _Pragma("clang diagnostic ignored \"-Weverything\"") \ + static_assert(true) #define TOML_ENABLE_WARNINGS TOML_POP_WARNINGS @@ -130,41 +144,75 @@ #define TOML_CPP_VERSION _MSVC_LANG #if TOML_MSVC // !intel-cl - #define TOML_PUSH_WARNINGS __pragma(warning(push)) \ - static_assert(true) + #define TOML_PUSH_WARNINGS \ + __pragma(warning(push)) \ + static_assert(true) - #define TOML_DISABLE_SWITCH_WARNINGS __pragma(warning(disable: 4061)) \ - __pragma(warning(disable: 4063)) \ - __pragma(warning(disable: 26819)) \ - static_assert(true) + #if TOML_HAS_INCLUDE() + #pragma warning(push, 0) + #include + #pragma warning(pop) + #define TOML_DISABLE_CODE_ANALYSIS_WARNINGS \ + __pragma(warning(disable: ALL_CODE_ANALYSIS_WARNINGS)) \ + static_assert(true) + #else + #define TOML_DISABLE_CODE_ANALYSIS_WARNINGS + static_assert(true) + #endif - #define TOML_DISABLE_SPAM_WARNINGS __pragma(warning(disable: 4127)) /* conditional expr is constant */ \ - __pragma(warning(disable: 4324)) /* structure was padded due to alignment specifier */ \ - __pragma(warning(disable: 4348)) \ - __pragma(warning(disable: 4505)) /* unreferenced local function removed */ \ - __pragma(warning(disable: 4514)) /* unreferenced inline function has been removed */ \ - __pragma(warning(disable: 4623)) /* default constructor was implicitly defined as deleted */ \ - __pragma(warning(disable: 4625)) /* copy constructor was implicitly defined as deleted */ \ - __pragma(warning(disable: 4626)) /* assignment operator was implicitly defined as deleted */ \ - __pragma(warning(disable: 4710)) /* function not inlined */ \ - __pragma(warning(disable: 4711)) /* function selected for automatic expansion */ \ - __pragma(warning(disable: 4820)) /* N bytes padding added */ \ - __pragma(warning(disable: 4946)) /* reinterpret_cast used between related classes */ \ - __pragma(warning(disable: 5026)) /* move constructor was implicitly defined as deleted */ \ - __pragma(warning(disable: 5027)) /* move assignment operator was implicitly defined as deleted */ \ - __pragma(warning(disable: 5045)) /* Compiler will insert Spectre mitigation */ \ - __pragma(warning(disable: 26451)) \ - __pragma(warning(disable: 26490)) \ - __pragma(warning(disable: 26495)) \ - __pragma(warning(disable: 26812)) \ - __pragma(warning(disable: 26819)) \ - static_assert(true) + #define TOML_DISABLE_SWITCH_WARNINGS \ + __pragma(warning(disable: 4061)) \ + __pragma(warning(disable: 4062)) \ + __pragma(warning(disable: 4063)) \ + __pragma(warning(disable: 26819)) \ + static_assert(true) - #define TOML_POP_WARNINGS __pragma(warning(pop)) \ - static_assert(true) + #define TOML_DISABLE_SPAM_WARNINGS \ + __pragma(warning(disable: 4127)) /* conditional expr is constant */ \ + __pragma(warning(disable: 4324)) /* structure was padded due to alignment specifier */ \ + __pragma(warning(disable: 4348)) \ + __pragma(warning(disable: 4464)) /* relative include path contains '..' */ \ + __pragma(warning(disable: 4505)) /* unreferenced local function removed */ \ + __pragma(warning(disable: 4514)) /* unreferenced inline function has been removed */ \ + __pragma(warning(disable: 4582)) /* constructor is not implicitly called */ \ + __pragma(warning(disable: 4623)) /* default constructor was implicitly defined as deleted */ \ + __pragma(warning(disable: 4625)) /* copy constructor was implicitly defined as deleted */ \ + __pragma(warning(disable: 4626)) /* assignment operator was implicitly defined as deleted */ \ + __pragma(warning(disable: 4710)) /* function not inlined */ \ + __pragma(warning(disable: 4711)) /* function selected for automatic expansion */ \ + __pragma(warning(disable: 4820)) /* N bytes padding added */ \ + __pragma(warning(disable: 4946)) /* reinterpret_cast used between related classes */ \ + __pragma(warning(disable: 5026)) /* move constructor was implicitly defined as deleted */ \ + __pragma(warning(disable: 5027)) /* move assignment operator was implicitly defined as deleted */ \ + __pragma(warning(disable: 5039)) /* potentially throwing function passed to 'extern "C"' function */ \ + __pragma(warning(disable: 5045)) /* Compiler will insert Spectre mitigation */ \ + __pragma(warning(disable: 26451)) \ + __pragma(warning(disable: 26490)) \ + __pragma(warning(disable: 26495)) \ + __pragma(warning(disable: 26812)) \ + __pragma(warning(disable: 26819)) \ + static_assert(true) - #define TOML_DISABLE_WARNINGS __pragma(warning(push, 0)) \ - static_assert(true) + #define TOML_DISABLE_ARITHMETIC_WARNINGS \ + __pragma(warning(disable: 4365)) /* argument signed/unsigned mismatch */ \ + __pragma(warning(disable: 4738)) /* storing 32-bit float result in memory */ \ + __pragma(warning(disable: 5219)) /* implicit conversion from integral to float */ \ + static_assert(true) + + #define TOML_POP_WARNINGS \ + __pragma(warning(pop)) \ + static_assert(true) + + #define TOML_DISABLE_WARNINGS \ + __pragma(warning(push, 0)) \ + __pragma(warning(disable: 4348)) \ + __pragma(warning(disable: 4668)) \ + __pragma(warning(disable: 5105)) \ + TOML_DISABLE_CODE_ANALYSIS_WARNINGS;\ + TOML_DISABLE_SWITCH_WARNINGS; \ + TOML_DISABLE_SPAM_WARNINGS; \ + TOML_DISABLE_ARITHMETIC_WARNINGS; \ + static_assert(true) #define TOML_ENABLE_WARNINGS TOML_POP_WARNINGS @@ -191,24 +239,28 @@ #if TOML_ICC - #define TOML_PUSH_WARNINGS __pragma(warning(push)) \ - static_assert(true) + #define TOML_PUSH_WARNINGS \ + __pragma(warning(push)) \ + static_assert(true) - #define TOML_DISABLE_SPAM_WARNINGS __pragma(warning(disable: 82)) /* storage class is not first */ \ - __pragma(warning(disable: 111)) /* statement unreachable (false-positive) */ \ - __pragma(warning(disable: 869)) /* unreferenced parameter */ \ - __pragma(warning(disable: 1011)) /* missing return (false-positive) */ \ - __pragma(warning(disable: 2261)) /* assume expr side-effects discarded */ \ - static_assert(true) + #define TOML_DISABLE_SPAM_WARNINGS \ + __pragma(warning(disable: 82)) /* storage class is not first */ \ + __pragma(warning(disable: 111)) /* statement unreachable (false-positive) */ \ + __pragma(warning(disable: 869)) /* unreferenced parameter */ \ + __pragma(warning(disable: 1011)) /* missing return (false-positive) */ \ + __pragma(warning(disable: 2261)) /* assume expr side-effects discarded */ \ + static_assert(true) - #define TOML_POP_WARNINGS __pragma(warning(pop)) \ - static_assert(true) + #define TOML_POP_WARNINGS \ + __pragma(warning(pop)) \ + static_assert(true) - #define TOML_DISABLE_WARNINGS __pragma(warning(push, 0)) \ - static_assert(true) + #define TOML_DISABLE_WARNINGS \ + __pragma(warning(push, 0)) \ + static_assert(true) - #define TOML_ENABLE_WARNINGS TOML_POP_WARNINGS \ - static_assert(true) + #define TOML_ENABLE_WARNINGS \ + TOML_POP_WARNINGS #endif // icc @@ -218,52 +270,61 @@ #if TOML_GCC - #define TOML_PUSH_WARNINGS _Pragma("GCC diagnostic push") \ - static_assert(true) + #define TOML_PUSH_WARNINGS \ + _Pragma("GCC diagnostic push") \ + static_assert(true) - #define TOML_DISABLE_SWITCH_WARNINGS _Pragma("GCC diagnostic ignored \"-Wswitch\"") \ - _Pragma("GCC diagnostic ignored \"-Wswitch-enum\"") \ - _Pragma("GCC diagnostic ignored \"-Wswitch-default\"") \ - static_assert(true) + #define TOML_DISABLE_SWITCH_WARNINGS \ + _Pragma("GCC diagnostic ignored \"-Wswitch\"") \ + _Pragma("GCC diagnostic ignored \"-Wswitch-enum\"") \ + _Pragma("GCC diagnostic ignored \"-Wswitch-default\"") \ + static_assert(true) - #define TOML_DISABLE_INIT_WARNINGS _Pragma("GCC diagnostic ignored \"-Wmissing-field-initializers\"") \ - _Pragma("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") \ - _Pragma("GCC diagnostic ignored \"-Wuninitialized\"") \ - static_assert(true) + #define TOML_DISABLE_INIT_WARNINGS \ + _Pragma("GCC diagnostic ignored \"-Wmissing-field-initializers\"") \ + _Pragma("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") \ + _Pragma("GCC diagnostic ignored \"-Wuninitialized\"") \ + static_assert(true) - #define TOML_DISABLE_ARITHMETIC_WARNINGS _Pragma("GCC diagnostic ignored \"-Wfloat-equal\"") \ - _Pragma("GCC diagnostic ignored \"-Wsign-conversion\"") \ - _Pragma("GCC diagnostic ignored \"-Wchar-subscripts\"") \ - static_assert(true) + #define TOML_DISABLE_ARITHMETIC_WARNINGS \ + _Pragma("GCC diagnostic ignored \"-Wfloat-equal\"") \ + _Pragma("GCC diagnostic ignored \"-Wsign-conversion\"") \ + _Pragma("GCC diagnostic ignored \"-Wchar-subscripts\"") \ + static_assert(true) - #define TOML_DISABLE_SHADOW_WARNINGS _Pragma("GCC diagnostic ignored \"-Wshadow\"") \ - static_assert(true) + #define TOML_DISABLE_SHADOW_WARNINGS \ + _Pragma("GCC diagnostic ignored \"-Wshadow\"") \ + static_assert(true) - #define TOML_DISABLE_SPAM_WARNINGS _Pragma("GCC diagnostic ignored \"-Wpadded\"") \ - _Pragma("GCC diagnostic ignored \"-Wcast-align\"") \ - _Pragma("GCC diagnostic ignored \"-Wcomment\"") \ - _Pragma("GCC diagnostic ignored \"-Wtype-limits\"") \ - _Pragma("GCC diagnostic ignored \"-Wuseless-cast\"") \ - _Pragma("GCC diagnostic ignored \"-Wsuggest-attribute=const\"") \ - _Pragma("GCC diagnostic ignored \"-Wsuggest-attribute=pure\"") \ - static_assert(true) + #define TOML_DISABLE_SPAM_WARNINGS \ + _Pragma("GCC diagnostic ignored \"-Wpadded\"") \ + _Pragma("GCC diagnostic ignored \"-Wcast-align\"") \ + _Pragma("GCC diagnostic ignored \"-Wcomment\"") \ + _Pragma("GCC diagnostic ignored \"-Wtype-limits\"") \ + _Pragma("GCC diagnostic ignored \"-Wuseless-cast\"") \ + _Pragma("GCC diagnostic ignored \"-Wsuggest-attribute=const\"") \ + _Pragma("GCC diagnostic ignored \"-Wsuggest-attribute=pure\"") \ + static_assert(true) - #define TOML_POP_WARNINGS _Pragma("GCC diagnostic pop") \ - static_assert(true) + #define TOML_POP_WARNINGS \ + _Pragma("GCC diagnostic pop") \ + static_assert(true) - #define TOML_DISABLE_WARNINGS TOML_PUSH_WARNINGS; \ - _Pragma("GCC diagnostic ignored \"-Wall\"") \ - _Pragma("GCC diagnostic ignored \"-Wextra\"") \ - _Pragma("GCC diagnostic ignored \"-Wpedantic\"") \ - TOML_DISABLE_SWITCH_WARNINGS; \ - TOML_DISABLE_INIT_WARNINGS; \ - TOML_DISABLE_ARITHMETIC_WARNINGS; \ - TOML_DISABLE_SHADOW_WARNINGS; \ - TOML_DISABLE_SPAM_WARNINGS; \ - static_assert(true) + #define TOML_DISABLE_WARNINGS \ + TOML_PUSH_WARNINGS; \ + _Pragma("GCC diagnostic ignored \"-Wall\"") \ + _Pragma("GCC diagnostic ignored \"-Wextra\"") \ + _Pragma("GCC diagnostic ignored \"-Wpedantic\"") \ + TOML_DISABLE_SWITCH_WARNINGS; \ + TOML_DISABLE_INIT_WARNINGS; \ + TOML_DISABLE_ARITHMETIC_WARNINGS; \ + TOML_DISABLE_SHADOW_WARNINGS; \ + TOML_DISABLE_SPAM_WARNINGS; \ + static_assert(true) - #define TOML_ENABLE_WARNINGS TOML_POP_WARNINGS + #define TOML_ENABLE_WARNINGS \ + TOML_POP_WARNINGS #define TOML_ATTR(...) __attribute__((__VA_ARGS__)) #ifndef TOML_ALWAYS_INLINE @@ -371,12 +432,6 @@ is no longer necessary. #endif #undef TOML_CPP_VERSION -#ifdef __has_include - #define TOML_HAS_INCLUDE(header) __has_include(header) -#else - #define TOML_HAS_INCLUDE(header) 0 -#endif - #ifndef TOML_COMPILER_EXCEPTIONS #if defined(__EXCEPTIONS) || defined(__cpp_exceptions) #define TOML_COMPILER_EXCEPTIONS 1 @@ -429,6 +484,9 @@ is no longer necessary. #ifndef TOML_PUSH_WARNINGS #define TOML_PUSH_WARNINGS static_assert(true) #endif +#ifndef TOML_DISABLE_CODE_ANALYSIS_WARNINGS + #define TOML_DISABLE_CODE_ANALYSIS_WARNINGS static_assert(true) +#endif #ifndef TOML_DISABLE_SWITCH_WARNINGS #define TOML_DISABLE_SWITCH_WARNINGS static_assert(true) #endif @@ -742,8 +800,8 @@ TOML_ENABLE_WARNINGS; /// \def TOML_IMPLEMENTATION -/// \brief Enables the library's implementation when #TOML_HEADER_ONLY is enabled. -/// \detail Not defined by default. Meaningless when #TOML_HEADER_ONLY is disabled. +/// \brief Enables the library's implementation when #TOML_HEADER_ONLY is disabled. +/// \detail Not defined by default. Meaningless when #TOML_HEADER_ONLY is enabled. /// \def TOML_LARGE_FILES diff --git a/tests/catch2.h b/tests/catch2.h index 1421134..7ff723d 100644 --- a/tests/catch2.h +++ b/tests/catch2.h @@ -7,14 +7,19 @@ #include "settings.h" #ifdef __clang__ -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Weverything" + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Weverything" #elif defined (__GNUC__) -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wall" -#pragma GCC diagnostic ignored "-Wextra" -#pragma GCC diagnostic ignored "-Wpadded" -#pragma GCC diagnostic ignored "-Wfloat-equal" + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wall" + #pragma GCC diagnostic ignored "-Wextra" + #pragma GCC diagnostic ignored "-Wpadded" + #pragma GCC diagnostic ignored "-Wfloat-equal" +#elif defined(_MSC_VER) + #pragma warning(push, 0) + #pragma warning(disable : 4365) + #pragma warning(disable : 4868) + #pragma warning(disable : 5105) #endif #if __has_include() @@ -24,8 +29,10 @@ #endif #ifdef __clang__ -#pragma clang diagnostic pop -#elif defined (__GNUC__) -#pragma GCC diagnostic pop + #pragma clang diagnostic pop +#elif defined(__GNUC__) + #pragma GCC diagnostic pop +#elif defined(_MSC_VER) + #pragma warning(pop) #endif diff --git a/tests/parsing_dates_and_times.cpp b/tests/parsing_dates_and_times.cpp index 4d4eacb..4130f86 100644 --- a/tests/parsing_dates_and_times.cpp +++ b/tests/parsing_dates_and_times.cpp @@ -5,7 +5,6 @@ #include "tests.h" -TOML_PUSH_WARNINGS; TOML_DISABLE_INIT_WARNINGS; TEST_CASE("parsing - dates and times") diff --git a/tests/tests.h b/tests/tests.h index 8581d6b..9bd870c 100644 --- a/tests/tests.h +++ b/tests/tests.h @@ -46,6 +46,7 @@ #define UNICODE_LITERALS_OK 1 #endif +TOML_DISABLE_SPAM_WARNINGS; TOML_DISABLE_ARITHMETIC_WARNINGS; TOML_DISABLE_WARNINGS; diff --git a/tests/vs/test_debug_x64.vcxproj b/tests/vs/test_debug_x64.vcxproj index 8a791c2..e2626a5 100644 --- a/tests/vs/test_debug_x64.vcxproj +++ b/tests/vs/test_debug_x64.vcxproj @@ -44,6 +44,28 @@ SHOULD_HAVE_EXCEPTIONS=1;%(PreprocessorDefinitions) stdcpp17 true + EnableAllWarnings + %(DisableSpecificWarnings);4127 + %(DisableSpecificWarnings);4324 + %(DisableSpecificWarnings);4464 + %(DisableSpecificWarnings);4505 + %(DisableSpecificWarnings);4514 + %(DisableSpecificWarnings);4577 + %(DisableSpecificWarnings);4582 + %(DisableSpecificWarnings);4623 + %(DisableSpecificWarnings);4625 + %(DisableSpecificWarnings);4626 + %(DisableSpecificWarnings);4710 + %(DisableSpecificWarnings);4711 + %(DisableSpecificWarnings);4738 + %(DisableSpecificWarnings);4820 + %(DisableSpecificWarnings);4866 + %(DisableSpecificWarnings);4868 + %(DisableSpecificWarnings);4946 + %(DisableSpecificWarnings);5026 + %(DisableSpecificWarnings);5027 + %(DisableSpecificWarnings);5039 + %(DisableSpecificWarnings);5045 diff --git a/tests/vs/test_debug_x64_cpplatest.vcxproj b/tests/vs/test_debug_x64_cpplatest.vcxproj index 326170d..2cebfe4 100644 --- a/tests/vs/test_debug_x64_cpplatest.vcxproj +++ b/tests/vs/test_debug_x64_cpplatest.vcxproj @@ -44,6 +44,28 @@ SHOULD_HAVE_EXCEPTIONS=1;%(PreprocessorDefinitions) stdcpplatest true + EnableAllWarnings + %(DisableSpecificWarnings);4127 + %(DisableSpecificWarnings);4324 + %(DisableSpecificWarnings);4464 + %(DisableSpecificWarnings);4505 + %(DisableSpecificWarnings);4514 + %(DisableSpecificWarnings);4577 + %(DisableSpecificWarnings);4582 + %(DisableSpecificWarnings);4623 + %(DisableSpecificWarnings);4625 + %(DisableSpecificWarnings);4626 + %(DisableSpecificWarnings);4710 + %(DisableSpecificWarnings);4711 + %(DisableSpecificWarnings);4738 + %(DisableSpecificWarnings);4820 + %(DisableSpecificWarnings);4866 + %(DisableSpecificWarnings);4868 + %(DisableSpecificWarnings);4946 + %(DisableSpecificWarnings);5026 + %(DisableSpecificWarnings);5027 + %(DisableSpecificWarnings);5039 + %(DisableSpecificWarnings);5045 diff --git a/tests/vs/test_debug_x64_cpplatest_noexcept.vcxproj b/tests/vs/test_debug_x64_cpplatest_noexcept.vcxproj index e399060..a587fc9 100644 --- a/tests/vs/test_debug_x64_cpplatest_noexcept.vcxproj +++ b/tests/vs/test_debug_x64_cpplatest_noexcept.vcxproj @@ -44,6 +44,28 @@ SHOULD_HAVE_EXCEPTIONS=1;%(PreprocessorDefinitions) stdcpplatest true + EnableAllWarnings + %(DisableSpecificWarnings);4127 + %(DisableSpecificWarnings);4324 + %(DisableSpecificWarnings);4464 + %(DisableSpecificWarnings);4505 + %(DisableSpecificWarnings);4514 + %(DisableSpecificWarnings);4577 + %(DisableSpecificWarnings);4582 + %(DisableSpecificWarnings);4623 + %(DisableSpecificWarnings);4625 + %(DisableSpecificWarnings);4626 + %(DisableSpecificWarnings);4710 + %(DisableSpecificWarnings);4711 + %(DisableSpecificWarnings);4738 + %(DisableSpecificWarnings);4820 + %(DisableSpecificWarnings);4866 + %(DisableSpecificWarnings);4868 + %(DisableSpecificWarnings);4946 + %(DisableSpecificWarnings);5026 + %(DisableSpecificWarnings);5027 + %(DisableSpecificWarnings);5039 + %(DisableSpecificWarnings);5045 diff --git a/tests/vs/test_debug_x64_cpplatest_noexcept_unrel.vcxproj b/tests/vs/test_debug_x64_cpplatest_noexcept_unrel.vcxproj index 7258961..29ffa88 100644 --- a/tests/vs/test_debug_x64_cpplatest_noexcept_unrel.vcxproj +++ b/tests/vs/test_debug_x64_cpplatest_noexcept_unrel.vcxproj @@ -44,6 +44,28 @@ SHOULD_HAVE_EXCEPTIONS=1;%(PreprocessorDefinitions) stdcpplatest true + EnableAllWarnings + %(DisableSpecificWarnings);4127 + %(DisableSpecificWarnings);4324 + %(DisableSpecificWarnings);4464 + %(DisableSpecificWarnings);4505 + %(DisableSpecificWarnings);4514 + %(DisableSpecificWarnings);4577 + %(DisableSpecificWarnings);4582 + %(DisableSpecificWarnings);4623 + %(DisableSpecificWarnings);4625 + %(DisableSpecificWarnings);4626 + %(DisableSpecificWarnings);4710 + %(DisableSpecificWarnings);4711 + %(DisableSpecificWarnings);4738 + %(DisableSpecificWarnings);4820 + %(DisableSpecificWarnings);4866 + %(DisableSpecificWarnings);4868 + %(DisableSpecificWarnings);4946 + %(DisableSpecificWarnings);5026 + %(DisableSpecificWarnings);5027 + %(DisableSpecificWarnings);5039 + %(DisableSpecificWarnings);5045 diff --git a/tests/vs/test_debug_x64_cpplatest_unrel.vcxproj b/tests/vs/test_debug_x64_cpplatest_unrel.vcxproj index 2501a31..5903882 100644 --- a/tests/vs/test_debug_x64_cpplatest_unrel.vcxproj +++ b/tests/vs/test_debug_x64_cpplatest_unrel.vcxproj @@ -44,6 +44,28 @@ SHOULD_HAVE_EXCEPTIONS=1;%(PreprocessorDefinitions) stdcpplatest true + EnableAllWarnings + %(DisableSpecificWarnings);4127 + %(DisableSpecificWarnings);4324 + %(DisableSpecificWarnings);4464 + %(DisableSpecificWarnings);4505 + %(DisableSpecificWarnings);4514 + %(DisableSpecificWarnings);4577 + %(DisableSpecificWarnings);4582 + %(DisableSpecificWarnings);4623 + %(DisableSpecificWarnings);4625 + %(DisableSpecificWarnings);4626 + %(DisableSpecificWarnings);4710 + %(DisableSpecificWarnings);4711 + %(DisableSpecificWarnings);4738 + %(DisableSpecificWarnings);4820 + %(DisableSpecificWarnings);4866 + %(DisableSpecificWarnings);4868 + %(DisableSpecificWarnings);4946 + %(DisableSpecificWarnings);5026 + %(DisableSpecificWarnings);5027 + %(DisableSpecificWarnings);5039 + %(DisableSpecificWarnings);5045 diff --git a/tests/vs/test_debug_x64_noexcept.vcxproj b/tests/vs/test_debug_x64_noexcept.vcxproj index e8b5466..93a030e 100644 --- a/tests/vs/test_debug_x64_noexcept.vcxproj +++ b/tests/vs/test_debug_x64_noexcept.vcxproj @@ -44,6 +44,28 @@ SHOULD_HAVE_EXCEPTIONS=1;%(PreprocessorDefinitions) stdcpp17 true + EnableAllWarnings + %(DisableSpecificWarnings);4127 + %(DisableSpecificWarnings);4324 + %(DisableSpecificWarnings);4464 + %(DisableSpecificWarnings);4505 + %(DisableSpecificWarnings);4514 + %(DisableSpecificWarnings);4577 + %(DisableSpecificWarnings);4582 + %(DisableSpecificWarnings);4623 + %(DisableSpecificWarnings);4625 + %(DisableSpecificWarnings);4626 + %(DisableSpecificWarnings);4710 + %(DisableSpecificWarnings);4711 + %(DisableSpecificWarnings);4738 + %(DisableSpecificWarnings);4820 + %(DisableSpecificWarnings);4866 + %(DisableSpecificWarnings);4868 + %(DisableSpecificWarnings);4946 + %(DisableSpecificWarnings);5026 + %(DisableSpecificWarnings);5027 + %(DisableSpecificWarnings);5039 + %(DisableSpecificWarnings);5045 diff --git a/tests/vs/test_debug_x64_noexcept_unrel.vcxproj b/tests/vs/test_debug_x64_noexcept_unrel.vcxproj index 181b6da..c252bcf 100644 --- a/tests/vs/test_debug_x64_noexcept_unrel.vcxproj +++ b/tests/vs/test_debug_x64_noexcept_unrel.vcxproj @@ -44,6 +44,28 @@ SHOULD_HAVE_EXCEPTIONS=1;%(PreprocessorDefinitions) stdcpp17 true + EnableAllWarnings + %(DisableSpecificWarnings);4127 + %(DisableSpecificWarnings);4324 + %(DisableSpecificWarnings);4464 + %(DisableSpecificWarnings);4505 + %(DisableSpecificWarnings);4514 + %(DisableSpecificWarnings);4577 + %(DisableSpecificWarnings);4582 + %(DisableSpecificWarnings);4623 + %(DisableSpecificWarnings);4625 + %(DisableSpecificWarnings);4626 + %(DisableSpecificWarnings);4710 + %(DisableSpecificWarnings);4711 + %(DisableSpecificWarnings);4738 + %(DisableSpecificWarnings);4820 + %(DisableSpecificWarnings);4866 + %(DisableSpecificWarnings);4868 + %(DisableSpecificWarnings);4946 + %(DisableSpecificWarnings);5026 + %(DisableSpecificWarnings);5027 + %(DisableSpecificWarnings);5039 + %(DisableSpecificWarnings);5045 diff --git a/tests/vs/test_debug_x64_unrel.vcxproj b/tests/vs/test_debug_x64_unrel.vcxproj index dc32c62..1d75548 100644 --- a/tests/vs/test_debug_x64_unrel.vcxproj +++ b/tests/vs/test_debug_x64_unrel.vcxproj @@ -44,6 +44,28 @@ SHOULD_HAVE_EXCEPTIONS=1;%(PreprocessorDefinitions) stdcpp17 true + EnableAllWarnings + %(DisableSpecificWarnings);4127 + %(DisableSpecificWarnings);4324 + %(DisableSpecificWarnings);4464 + %(DisableSpecificWarnings);4505 + %(DisableSpecificWarnings);4514 + %(DisableSpecificWarnings);4577 + %(DisableSpecificWarnings);4582 + %(DisableSpecificWarnings);4623 + %(DisableSpecificWarnings);4625 + %(DisableSpecificWarnings);4626 + %(DisableSpecificWarnings);4710 + %(DisableSpecificWarnings);4711 + %(DisableSpecificWarnings);4738 + %(DisableSpecificWarnings);4820 + %(DisableSpecificWarnings);4866 + %(DisableSpecificWarnings);4868 + %(DisableSpecificWarnings);4946 + %(DisableSpecificWarnings);5026 + %(DisableSpecificWarnings);5027 + %(DisableSpecificWarnings);5039 + %(DisableSpecificWarnings);5045 diff --git a/tests/vs/test_debug_x86.vcxproj b/tests/vs/test_debug_x86.vcxproj index 7db16c7..8db2fba 100644 --- a/tests/vs/test_debug_x86.vcxproj +++ b/tests/vs/test_debug_x86.vcxproj @@ -44,6 +44,28 @@ SHOULD_HAVE_EXCEPTIONS=1;%(PreprocessorDefinitions) stdcpp17 true + EnableAllWarnings + %(DisableSpecificWarnings);4127 + %(DisableSpecificWarnings);4324 + %(DisableSpecificWarnings);4464 + %(DisableSpecificWarnings);4505 + %(DisableSpecificWarnings);4514 + %(DisableSpecificWarnings);4577 + %(DisableSpecificWarnings);4582 + %(DisableSpecificWarnings);4623 + %(DisableSpecificWarnings);4625 + %(DisableSpecificWarnings);4626 + %(DisableSpecificWarnings);4710 + %(DisableSpecificWarnings);4711 + %(DisableSpecificWarnings);4738 + %(DisableSpecificWarnings);4820 + %(DisableSpecificWarnings);4866 + %(DisableSpecificWarnings);4868 + %(DisableSpecificWarnings);4946 + %(DisableSpecificWarnings);5026 + %(DisableSpecificWarnings);5027 + %(DisableSpecificWarnings);5039 + %(DisableSpecificWarnings);5045 diff --git a/tests/vs/test_debug_x86_cpplatest.vcxproj b/tests/vs/test_debug_x86_cpplatest.vcxproj index b25dbb9..1f33445 100644 --- a/tests/vs/test_debug_x86_cpplatest.vcxproj +++ b/tests/vs/test_debug_x86_cpplatest.vcxproj @@ -44,6 +44,28 @@ SHOULD_HAVE_EXCEPTIONS=1;%(PreprocessorDefinitions) stdcpplatest true + EnableAllWarnings + %(DisableSpecificWarnings);4127 + %(DisableSpecificWarnings);4324 + %(DisableSpecificWarnings);4464 + %(DisableSpecificWarnings);4505 + %(DisableSpecificWarnings);4514 + %(DisableSpecificWarnings);4577 + %(DisableSpecificWarnings);4582 + %(DisableSpecificWarnings);4623 + %(DisableSpecificWarnings);4625 + %(DisableSpecificWarnings);4626 + %(DisableSpecificWarnings);4710 + %(DisableSpecificWarnings);4711 + %(DisableSpecificWarnings);4738 + %(DisableSpecificWarnings);4820 + %(DisableSpecificWarnings);4866 + %(DisableSpecificWarnings);4868 + %(DisableSpecificWarnings);4946 + %(DisableSpecificWarnings);5026 + %(DisableSpecificWarnings);5027 + %(DisableSpecificWarnings);5039 + %(DisableSpecificWarnings);5045 diff --git a/tests/vs/test_debug_x86_cpplatest_noexcept.vcxproj b/tests/vs/test_debug_x86_cpplatest_noexcept.vcxproj index 16e859a..394d937 100644 --- a/tests/vs/test_debug_x86_cpplatest_noexcept.vcxproj +++ b/tests/vs/test_debug_x86_cpplatest_noexcept.vcxproj @@ -44,6 +44,28 @@ SHOULD_HAVE_EXCEPTIONS=1;%(PreprocessorDefinitions) stdcpplatest true + EnableAllWarnings + %(DisableSpecificWarnings);4127 + %(DisableSpecificWarnings);4324 + %(DisableSpecificWarnings);4464 + %(DisableSpecificWarnings);4505 + %(DisableSpecificWarnings);4514 + %(DisableSpecificWarnings);4577 + %(DisableSpecificWarnings);4582 + %(DisableSpecificWarnings);4623 + %(DisableSpecificWarnings);4625 + %(DisableSpecificWarnings);4626 + %(DisableSpecificWarnings);4710 + %(DisableSpecificWarnings);4711 + %(DisableSpecificWarnings);4738 + %(DisableSpecificWarnings);4820 + %(DisableSpecificWarnings);4866 + %(DisableSpecificWarnings);4868 + %(DisableSpecificWarnings);4946 + %(DisableSpecificWarnings);5026 + %(DisableSpecificWarnings);5027 + %(DisableSpecificWarnings);5039 + %(DisableSpecificWarnings);5045 diff --git a/tests/vs/test_debug_x86_cpplatest_noexcept_unrel.vcxproj b/tests/vs/test_debug_x86_cpplatest_noexcept_unrel.vcxproj index 5e93b56..9affd82 100644 --- a/tests/vs/test_debug_x86_cpplatest_noexcept_unrel.vcxproj +++ b/tests/vs/test_debug_x86_cpplatest_noexcept_unrel.vcxproj @@ -44,6 +44,28 @@ SHOULD_HAVE_EXCEPTIONS=1;%(PreprocessorDefinitions) stdcpplatest true + EnableAllWarnings + %(DisableSpecificWarnings);4127 + %(DisableSpecificWarnings);4324 + %(DisableSpecificWarnings);4464 + %(DisableSpecificWarnings);4505 + %(DisableSpecificWarnings);4514 + %(DisableSpecificWarnings);4577 + %(DisableSpecificWarnings);4582 + %(DisableSpecificWarnings);4623 + %(DisableSpecificWarnings);4625 + %(DisableSpecificWarnings);4626 + %(DisableSpecificWarnings);4710 + %(DisableSpecificWarnings);4711 + %(DisableSpecificWarnings);4738 + %(DisableSpecificWarnings);4820 + %(DisableSpecificWarnings);4866 + %(DisableSpecificWarnings);4868 + %(DisableSpecificWarnings);4946 + %(DisableSpecificWarnings);5026 + %(DisableSpecificWarnings);5027 + %(DisableSpecificWarnings);5039 + %(DisableSpecificWarnings);5045 diff --git a/tests/vs/test_debug_x86_cpplatest_unrel.vcxproj b/tests/vs/test_debug_x86_cpplatest_unrel.vcxproj index 2f78858..8a9e57b 100644 --- a/tests/vs/test_debug_x86_cpplatest_unrel.vcxproj +++ b/tests/vs/test_debug_x86_cpplatest_unrel.vcxproj @@ -44,6 +44,28 @@ SHOULD_HAVE_EXCEPTIONS=1;%(PreprocessorDefinitions) stdcpplatest true + EnableAllWarnings + %(DisableSpecificWarnings);4127 + %(DisableSpecificWarnings);4324 + %(DisableSpecificWarnings);4464 + %(DisableSpecificWarnings);4505 + %(DisableSpecificWarnings);4514 + %(DisableSpecificWarnings);4577 + %(DisableSpecificWarnings);4582 + %(DisableSpecificWarnings);4623 + %(DisableSpecificWarnings);4625 + %(DisableSpecificWarnings);4626 + %(DisableSpecificWarnings);4710 + %(DisableSpecificWarnings);4711 + %(DisableSpecificWarnings);4738 + %(DisableSpecificWarnings);4820 + %(DisableSpecificWarnings);4866 + %(DisableSpecificWarnings);4868 + %(DisableSpecificWarnings);4946 + %(DisableSpecificWarnings);5026 + %(DisableSpecificWarnings);5027 + %(DisableSpecificWarnings);5039 + %(DisableSpecificWarnings);5045 diff --git a/tests/vs/test_debug_x86_noexcept.vcxproj b/tests/vs/test_debug_x86_noexcept.vcxproj index ebe202c..ec396aa 100644 --- a/tests/vs/test_debug_x86_noexcept.vcxproj +++ b/tests/vs/test_debug_x86_noexcept.vcxproj @@ -44,6 +44,28 @@ SHOULD_HAVE_EXCEPTIONS=1;%(PreprocessorDefinitions) stdcpp17 true + EnableAllWarnings + %(DisableSpecificWarnings);4127 + %(DisableSpecificWarnings);4324 + %(DisableSpecificWarnings);4464 + %(DisableSpecificWarnings);4505 + %(DisableSpecificWarnings);4514 + %(DisableSpecificWarnings);4577 + %(DisableSpecificWarnings);4582 + %(DisableSpecificWarnings);4623 + %(DisableSpecificWarnings);4625 + %(DisableSpecificWarnings);4626 + %(DisableSpecificWarnings);4710 + %(DisableSpecificWarnings);4711 + %(DisableSpecificWarnings);4738 + %(DisableSpecificWarnings);4820 + %(DisableSpecificWarnings);4866 + %(DisableSpecificWarnings);4868 + %(DisableSpecificWarnings);4946 + %(DisableSpecificWarnings);5026 + %(DisableSpecificWarnings);5027 + %(DisableSpecificWarnings);5039 + %(DisableSpecificWarnings);5045 diff --git a/tests/vs/test_debug_x86_noexcept_unrel.vcxproj b/tests/vs/test_debug_x86_noexcept_unrel.vcxproj index a32662d..caed681 100644 --- a/tests/vs/test_debug_x86_noexcept_unrel.vcxproj +++ b/tests/vs/test_debug_x86_noexcept_unrel.vcxproj @@ -44,6 +44,28 @@ SHOULD_HAVE_EXCEPTIONS=1;%(PreprocessorDefinitions) stdcpp17 true + EnableAllWarnings + %(DisableSpecificWarnings);4127 + %(DisableSpecificWarnings);4324 + %(DisableSpecificWarnings);4464 + %(DisableSpecificWarnings);4505 + %(DisableSpecificWarnings);4514 + %(DisableSpecificWarnings);4577 + %(DisableSpecificWarnings);4582 + %(DisableSpecificWarnings);4623 + %(DisableSpecificWarnings);4625 + %(DisableSpecificWarnings);4626 + %(DisableSpecificWarnings);4710 + %(DisableSpecificWarnings);4711 + %(DisableSpecificWarnings);4738 + %(DisableSpecificWarnings);4820 + %(DisableSpecificWarnings);4866 + %(DisableSpecificWarnings);4868 + %(DisableSpecificWarnings);4946 + %(DisableSpecificWarnings);5026 + %(DisableSpecificWarnings);5027 + %(DisableSpecificWarnings);5039 + %(DisableSpecificWarnings);5045 diff --git a/tests/vs/test_debug_x86_unrel.vcxproj b/tests/vs/test_debug_x86_unrel.vcxproj index 2bbd885..e12b440 100644 --- a/tests/vs/test_debug_x86_unrel.vcxproj +++ b/tests/vs/test_debug_x86_unrel.vcxproj @@ -44,6 +44,28 @@ SHOULD_HAVE_EXCEPTIONS=1;%(PreprocessorDefinitions) stdcpp17 true + EnableAllWarnings + %(DisableSpecificWarnings);4127 + %(DisableSpecificWarnings);4324 + %(DisableSpecificWarnings);4464 + %(DisableSpecificWarnings);4505 + %(DisableSpecificWarnings);4514 + %(DisableSpecificWarnings);4577 + %(DisableSpecificWarnings);4582 + %(DisableSpecificWarnings);4623 + %(DisableSpecificWarnings);4625 + %(DisableSpecificWarnings);4626 + %(DisableSpecificWarnings);4710 + %(DisableSpecificWarnings);4711 + %(DisableSpecificWarnings);4738 + %(DisableSpecificWarnings);4820 + %(DisableSpecificWarnings);4866 + %(DisableSpecificWarnings);4868 + %(DisableSpecificWarnings);4946 + %(DisableSpecificWarnings);5026 + %(DisableSpecificWarnings);5027 + %(DisableSpecificWarnings);5039 + %(DisableSpecificWarnings);5045 diff --git a/tests/vs/test_release_x64.vcxproj b/tests/vs/test_release_x64.vcxproj index 0adcc63..ad53b13 100644 --- a/tests/vs/test_release_x64.vcxproj +++ b/tests/vs/test_release_x64.vcxproj @@ -44,6 +44,28 @@ SHOULD_HAVE_EXCEPTIONS=1;%(PreprocessorDefinitions) stdcpp17 true + EnableAllWarnings + %(DisableSpecificWarnings);4127 + %(DisableSpecificWarnings);4324 + %(DisableSpecificWarnings);4464 + %(DisableSpecificWarnings);4505 + %(DisableSpecificWarnings);4514 + %(DisableSpecificWarnings);4577 + %(DisableSpecificWarnings);4582 + %(DisableSpecificWarnings);4623 + %(DisableSpecificWarnings);4625 + %(DisableSpecificWarnings);4626 + %(DisableSpecificWarnings);4710 + %(DisableSpecificWarnings);4711 + %(DisableSpecificWarnings);4738 + %(DisableSpecificWarnings);4820 + %(DisableSpecificWarnings);4866 + %(DisableSpecificWarnings);4868 + %(DisableSpecificWarnings);4946 + %(DisableSpecificWarnings);5026 + %(DisableSpecificWarnings);5027 + %(DisableSpecificWarnings);5039 + %(DisableSpecificWarnings);5045 diff --git a/tests/vs/test_release_x64_cpplatest.vcxproj b/tests/vs/test_release_x64_cpplatest.vcxproj index 20e5606..6cc46a4 100644 --- a/tests/vs/test_release_x64_cpplatest.vcxproj +++ b/tests/vs/test_release_x64_cpplatest.vcxproj @@ -44,6 +44,28 @@ SHOULD_HAVE_EXCEPTIONS=1;%(PreprocessorDefinitions) stdcpplatest true + EnableAllWarnings + %(DisableSpecificWarnings);4127 + %(DisableSpecificWarnings);4324 + %(DisableSpecificWarnings);4464 + %(DisableSpecificWarnings);4505 + %(DisableSpecificWarnings);4514 + %(DisableSpecificWarnings);4577 + %(DisableSpecificWarnings);4582 + %(DisableSpecificWarnings);4623 + %(DisableSpecificWarnings);4625 + %(DisableSpecificWarnings);4626 + %(DisableSpecificWarnings);4710 + %(DisableSpecificWarnings);4711 + %(DisableSpecificWarnings);4738 + %(DisableSpecificWarnings);4820 + %(DisableSpecificWarnings);4866 + %(DisableSpecificWarnings);4868 + %(DisableSpecificWarnings);4946 + %(DisableSpecificWarnings);5026 + %(DisableSpecificWarnings);5027 + %(DisableSpecificWarnings);5039 + %(DisableSpecificWarnings);5045 diff --git a/tests/vs/test_release_x64_cpplatest_noexcept.vcxproj b/tests/vs/test_release_x64_cpplatest_noexcept.vcxproj index 4337867..bb009f2 100644 --- a/tests/vs/test_release_x64_cpplatest_noexcept.vcxproj +++ b/tests/vs/test_release_x64_cpplatest_noexcept.vcxproj @@ -44,6 +44,28 @@ SHOULD_HAVE_EXCEPTIONS=1;%(PreprocessorDefinitions) stdcpplatest true + EnableAllWarnings + %(DisableSpecificWarnings);4127 + %(DisableSpecificWarnings);4324 + %(DisableSpecificWarnings);4464 + %(DisableSpecificWarnings);4505 + %(DisableSpecificWarnings);4514 + %(DisableSpecificWarnings);4577 + %(DisableSpecificWarnings);4582 + %(DisableSpecificWarnings);4623 + %(DisableSpecificWarnings);4625 + %(DisableSpecificWarnings);4626 + %(DisableSpecificWarnings);4710 + %(DisableSpecificWarnings);4711 + %(DisableSpecificWarnings);4738 + %(DisableSpecificWarnings);4820 + %(DisableSpecificWarnings);4866 + %(DisableSpecificWarnings);4868 + %(DisableSpecificWarnings);4946 + %(DisableSpecificWarnings);5026 + %(DisableSpecificWarnings);5027 + %(DisableSpecificWarnings);5039 + %(DisableSpecificWarnings);5045 diff --git a/tests/vs/test_release_x64_cpplatest_noexcept_unrel.vcxproj b/tests/vs/test_release_x64_cpplatest_noexcept_unrel.vcxproj index d4e94a9..d547256 100644 --- a/tests/vs/test_release_x64_cpplatest_noexcept_unrel.vcxproj +++ b/tests/vs/test_release_x64_cpplatest_noexcept_unrel.vcxproj @@ -44,6 +44,28 @@ SHOULD_HAVE_EXCEPTIONS=1;%(PreprocessorDefinitions) stdcpplatest true + EnableAllWarnings + %(DisableSpecificWarnings);4127 + %(DisableSpecificWarnings);4324 + %(DisableSpecificWarnings);4464 + %(DisableSpecificWarnings);4505 + %(DisableSpecificWarnings);4514 + %(DisableSpecificWarnings);4577 + %(DisableSpecificWarnings);4582 + %(DisableSpecificWarnings);4623 + %(DisableSpecificWarnings);4625 + %(DisableSpecificWarnings);4626 + %(DisableSpecificWarnings);4710 + %(DisableSpecificWarnings);4711 + %(DisableSpecificWarnings);4738 + %(DisableSpecificWarnings);4820 + %(DisableSpecificWarnings);4866 + %(DisableSpecificWarnings);4868 + %(DisableSpecificWarnings);4946 + %(DisableSpecificWarnings);5026 + %(DisableSpecificWarnings);5027 + %(DisableSpecificWarnings);5039 + %(DisableSpecificWarnings);5045 diff --git a/tests/vs/test_release_x64_cpplatest_unrel.vcxproj b/tests/vs/test_release_x64_cpplatest_unrel.vcxproj index b4ac913..734acdf 100644 --- a/tests/vs/test_release_x64_cpplatest_unrel.vcxproj +++ b/tests/vs/test_release_x64_cpplatest_unrel.vcxproj @@ -44,6 +44,28 @@ SHOULD_HAVE_EXCEPTIONS=1;%(PreprocessorDefinitions) stdcpplatest true + EnableAllWarnings + %(DisableSpecificWarnings);4127 + %(DisableSpecificWarnings);4324 + %(DisableSpecificWarnings);4464 + %(DisableSpecificWarnings);4505 + %(DisableSpecificWarnings);4514 + %(DisableSpecificWarnings);4577 + %(DisableSpecificWarnings);4582 + %(DisableSpecificWarnings);4623 + %(DisableSpecificWarnings);4625 + %(DisableSpecificWarnings);4626 + %(DisableSpecificWarnings);4710 + %(DisableSpecificWarnings);4711 + %(DisableSpecificWarnings);4738 + %(DisableSpecificWarnings);4820 + %(DisableSpecificWarnings);4866 + %(DisableSpecificWarnings);4868 + %(DisableSpecificWarnings);4946 + %(DisableSpecificWarnings);5026 + %(DisableSpecificWarnings);5027 + %(DisableSpecificWarnings);5039 + %(DisableSpecificWarnings);5045 diff --git a/tests/vs/test_release_x64_noexcept.vcxproj b/tests/vs/test_release_x64_noexcept.vcxproj index 0a9fc68..8679841 100644 --- a/tests/vs/test_release_x64_noexcept.vcxproj +++ b/tests/vs/test_release_x64_noexcept.vcxproj @@ -44,6 +44,28 @@ SHOULD_HAVE_EXCEPTIONS=1;%(PreprocessorDefinitions) stdcpp17 true + EnableAllWarnings + %(DisableSpecificWarnings);4127 + %(DisableSpecificWarnings);4324 + %(DisableSpecificWarnings);4464 + %(DisableSpecificWarnings);4505 + %(DisableSpecificWarnings);4514 + %(DisableSpecificWarnings);4577 + %(DisableSpecificWarnings);4582 + %(DisableSpecificWarnings);4623 + %(DisableSpecificWarnings);4625 + %(DisableSpecificWarnings);4626 + %(DisableSpecificWarnings);4710 + %(DisableSpecificWarnings);4711 + %(DisableSpecificWarnings);4738 + %(DisableSpecificWarnings);4820 + %(DisableSpecificWarnings);4866 + %(DisableSpecificWarnings);4868 + %(DisableSpecificWarnings);4946 + %(DisableSpecificWarnings);5026 + %(DisableSpecificWarnings);5027 + %(DisableSpecificWarnings);5039 + %(DisableSpecificWarnings);5045 diff --git a/tests/vs/test_release_x64_noexcept_unrel.vcxproj b/tests/vs/test_release_x64_noexcept_unrel.vcxproj index 980b28b..ce3239a 100644 --- a/tests/vs/test_release_x64_noexcept_unrel.vcxproj +++ b/tests/vs/test_release_x64_noexcept_unrel.vcxproj @@ -44,6 +44,28 @@ SHOULD_HAVE_EXCEPTIONS=1;%(PreprocessorDefinitions) stdcpp17 true + EnableAllWarnings + %(DisableSpecificWarnings);4127 + %(DisableSpecificWarnings);4324 + %(DisableSpecificWarnings);4464 + %(DisableSpecificWarnings);4505 + %(DisableSpecificWarnings);4514 + %(DisableSpecificWarnings);4577 + %(DisableSpecificWarnings);4582 + %(DisableSpecificWarnings);4623 + %(DisableSpecificWarnings);4625 + %(DisableSpecificWarnings);4626 + %(DisableSpecificWarnings);4710 + %(DisableSpecificWarnings);4711 + %(DisableSpecificWarnings);4738 + %(DisableSpecificWarnings);4820 + %(DisableSpecificWarnings);4866 + %(DisableSpecificWarnings);4868 + %(DisableSpecificWarnings);4946 + %(DisableSpecificWarnings);5026 + %(DisableSpecificWarnings);5027 + %(DisableSpecificWarnings);5039 + %(DisableSpecificWarnings);5045 diff --git a/tests/vs/test_release_x64_unrel.vcxproj b/tests/vs/test_release_x64_unrel.vcxproj index 33aa2a3..cc8a8a8 100644 --- a/tests/vs/test_release_x64_unrel.vcxproj +++ b/tests/vs/test_release_x64_unrel.vcxproj @@ -44,6 +44,28 @@ SHOULD_HAVE_EXCEPTIONS=1;%(PreprocessorDefinitions) stdcpp17 true + EnableAllWarnings + %(DisableSpecificWarnings);4127 + %(DisableSpecificWarnings);4324 + %(DisableSpecificWarnings);4464 + %(DisableSpecificWarnings);4505 + %(DisableSpecificWarnings);4514 + %(DisableSpecificWarnings);4577 + %(DisableSpecificWarnings);4582 + %(DisableSpecificWarnings);4623 + %(DisableSpecificWarnings);4625 + %(DisableSpecificWarnings);4626 + %(DisableSpecificWarnings);4710 + %(DisableSpecificWarnings);4711 + %(DisableSpecificWarnings);4738 + %(DisableSpecificWarnings);4820 + %(DisableSpecificWarnings);4866 + %(DisableSpecificWarnings);4868 + %(DisableSpecificWarnings);4946 + %(DisableSpecificWarnings);5026 + %(DisableSpecificWarnings);5027 + %(DisableSpecificWarnings);5039 + %(DisableSpecificWarnings);5045 diff --git a/tests/vs/test_release_x86.vcxproj b/tests/vs/test_release_x86.vcxproj index 219ee46..ead38b3 100644 --- a/tests/vs/test_release_x86.vcxproj +++ b/tests/vs/test_release_x86.vcxproj @@ -44,6 +44,28 @@ SHOULD_HAVE_EXCEPTIONS=1;%(PreprocessorDefinitions) stdcpp17 true + EnableAllWarnings + %(DisableSpecificWarnings);4127 + %(DisableSpecificWarnings);4324 + %(DisableSpecificWarnings);4464 + %(DisableSpecificWarnings);4505 + %(DisableSpecificWarnings);4514 + %(DisableSpecificWarnings);4577 + %(DisableSpecificWarnings);4582 + %(DisableSpecificWarnings);4623 + %(DisableSpecificWarnings);4625 + %(DisableSpecificWarnings);4626 + %(DisableSpecificWarnings);4710 + %(DisableSpecificWarnings);4711 + %(DisableSpecificWarnings);4738 + %(DisableSpecificWarnings);4820 + %(DisableSpecificWarnings);4866 + %(DisableSpecificWarnings);4868 + %(DisableSpecificWarnings);4946 + %(DisableSpecificWarnings);5026 + %(DisableSpecificWarnings);5027 + %(DisableSpecificWarnings);5039 + %(DisableSpecificWarnings);5045 diff --git a/tests/vs/test_release_x86_cpplatest.vcxproj b/tests/vs/test_release_x86_cpplatest.vcxproj index 751b520..c7d4977 100644 --- a/tests/vs/test_release_x86_cpplatest.vcxproj +++ b/tests/vs/test_release_x86_cpplatest.vcxproj @@ -44,6 +44,28 @@ SHOULD_HAVE_EXCEPTIONS=1;%(PreprocessorDefinitions) stdcpplatest true + EnableAllWarnings + %(DisableSpecificWarnings);4127 + %(DisableSpecificWarnings);4324 + %(DisableSpecificWarnings);4464 + %(DisableSpecificWarnings);4505 + %(DisableSpecificWarnings);4514 + %(DisableSpecificWarnings);4577 + %(DisableSpecificWarnings);4582 + %(DisableSpecificWarnings);4623 + %(DisableSpecificWarnings);4625 + %(DisableSpecificWarnings);4626 + %(DisableSpecificWarnings);4710 + %(DisableSpecificWarnings);4711 + %(DisableSpecificWarnings);4738 + %(DisableSpecificWarnings);4820 + %(DisableSpecificWarnings);4866 + %(DisableSpecificWarnings);4868 + %(DisableSpecificWarnings);4946 + %(DisableSpecificWarnings);5026 + %(DisableSpecificWarnings);5027 + %(DisableSpecificWarnings);5039 + %(DisableSpecificWarnings);5045 diff --git a/tests/vs/test_release_x86_cpplatest_noexcept.vcxproj b/tests/vs/test_release_x86_cpplatest_noexcept.vcxproj index 620122e..e126afa 100644 --- a/tests/vs/test_release_x86_cpplatest_noexcept.vcxproj +++ b/tests/vs/test_release_x86_cpplatest_noexcept.vcxproj @@ -44,6 +44,28 @@ SHOULD_HAVE_EXCEPTIONS=1;%(PreprocessorDefinitions) stdcpplatest true + EnableAllWarnings + %(DisableSpecificWarnings);4127 + %(DisableSpecificWarnings);4324 + %(DisableSpecificWarnings);4464 + %(DisableSpecificWarnings);4505 + %(DisableSpecificWarnings);4514 + %(DisableSpecificWarnings);4577 + %(DisableSpecificWarnings);4582 + %(DisableSpecificWarnings);4623 + %(DisableSpecificWarnings);4625 + %(DisableSpecificWarnings);4626 + %(DisableSpecificWarnings);4710 + %(DisableSpecificWarnings);4711 + %(DisableSpecificWarnings);4738 + %(DisableSpecificWarnings);4820 + %(DisableSpecificWarnings);4866 + %(DisableSpecificWarnings);4868 + %(DisableSpecificWarnings);4946 + %(DisableSpecificWarnings);5026 + %(DisableSpecificWarnings);5027 + %(DisableSpecificWarnings);5039 + %(DisableSpecificWarnings);5045 diff --git a/tests/vs/test_release_x86_cpplatest_noexcept_unrel.vcxproj b/tests/vs/test_release_x86_cpplatest_noexcept_unrel.vcxproj index c0236b9..12b925e 100644 --- a/tests/vs/test_release_x86_cpplatest_noexcept_unrel.vcxproj +++ b/tests/vs/test_release_x86_cpplatest_noexcept_unrel.vcxproj @@ -44,6 +44,28 @@ SHOULD_HAVE_EXCEPTIONS=1;%(PreprocessorDefinitions) stdcpplatest true + EnableAllWarnings + %(DisableSpecificWarnings);4127 + %(DisableSpecificWarnings);4324 + %(DisableSpecificWarnings);4464 + %(DisableSpecificWarnings);4505 + %(DisableSpecificWarnings);4514 + %(DisableSpecificWarnings);4577 + %(DisableSpecificWarnings);4582 + %(DisableSpecificWarnings);4623 + %(DisableSpecificWarnings);4625 + %(DisableSpecificWarnings);4626 + %(DisableSpecificWarnings);4710 + %(DisableSpecificWarnings);4711 + %(DisableSpecificWarnings);4738 + %(DisableSpecificWarnings);4820 + %(DisableSpecificWarnings);4866 + %(DisableSpecificWarnings);4868 + %(DisableSpecificWarnings);4946 + %(DisableSpecificWarnings);5026 + %(DisableSpecificWarnings);5027 + %(DisableSpecificWarnings);5039 + %(DisableSpecificWarnings);5045 diff --git a/tests/vs/test_release_x86_cpplatest_unrel.vcxproj b/tests/vs/test_release_x86_cpplatest_unrel.vcxproj index 090c5e8..a6fd28b 100644 --- a/tests/vs/test_release_x86_cpplatest_unrel.vcxproj +++ b/tests/vs/test_release_x86_cpplatest_unrel.vcxproj @@ -44,6 +44,28 @@ SHOULD_HAVE_EXCEPTIONS=1;%(PreprocessorDefinitions) stdcpplatest true + EnableAllWarnings + %(DisableSpecificWarnings);4127 + %(DisableSpecificWarnings);4324 + %(DisableSpecificWarnings);4464 + %(DisableSpecificWarnings);4505 + %(DisableSpecificWarnings);4514 + %(DisableSpecificWarnings);4577 + %(DisableSpecificWarnings);4582 + %(DisableSpecificWarnings);4623 + %(DisableSpecificWarnings);4625 + %(DisableSpecificWarnings);4626 + %(DisableSpecificWarnings);4710 + %(DisableSpecificWarnings);4711 + %(DisableSpecificWarnings);4738 + %(DisableSpecificWarnings);4820 + %(DisableSpecificWarnings);4866 + %(DisableSpecificWarnings);4868 + %(DisableSpecificWarnings);4946 + %(DisableSpecificWarnings);5026 + %(DisableSpecificWarnings);5027 + %(DisableSpecificWarnings);5039 + %(DisableSpecificWarnings);5045 diff --git a/tests/vs/test_release_x86_noexcept.vcxproj b/tests/vs/test_release_x86_noexcept.vcxproj index 57c2ee9..ccf22ce 100644 --- a/tests/vs/test_release_x86_noexcept.vcxproj +++ b/tests/vs/test_release_x86_noexcept.vcxproj @@ -44,6 +44,28 @@ SHOULD_HAVE_EXCEPTIONS=1;%(PreprocessorDefinitions) stdcpp17 true + EnableAllWarnings + %(DisableSpecificWarnings);4127 + %(DisableSpecificWarnings);4324 + %(DisableSpecificWarnings);4464 + %(DisableSpecificWarnings);4505 + %(DisableSpecificWarnings);4514 + %(DisableSpecificWarnings);4577 + %(DisableSpecificWarnings);4582 + %(DisableSpecificWarnings);4623 + %(DisableSpecificWarnings);4625 + %(DisableSpecificWarnings);4626 + %(DisableSpecificWarnings);4710 + %(DisableSpecificWarnings);4711 + %(DisableSpecificWarnings);4738 + %(DisableSpecificWarnings);4820 + %(DisableSpecificWarnings);4866 + %(DisableSpecificWarnings);4868 + %(DisableSpecificWarnings);4946 + %(DisableSpecificWarnings);5026 + %(DisableSpecificWarnings);5027 + %(DisableSpecificWarnings);5039 + %(DisableSpecificWarnings);5045 diff --git a/tests/vs/test_release_x86_noexcept_unrel.vcxproj b/tests/vs/test_release_x86_noexcept_unrel.vcxproj index 2540879..d860d33 100644 --- a/tests/vs/test_release_x86_noexcept_unrel.vcxproj +++ b/tests/vs/test_release_x86_noexcept_unrel.vcxproj @@ -44,6 +44,28 @@ SHOULD_HAVE_EXCEPTIONS=1;%(PreprocessorDefinitions) stdcpp17 true + EnableAllWarnings + %(DisableSpecificWarnings);4127 + %(DisableSpecificWarnings);4324 + %(DisableSpecificWarnings);4464 + %(DisableSpecificWarnings);4505 + %(DisableSpecificWarnings);4514 + %(DisableSpecificWarnings);4577 + %(DisableSpecificWarnings);4582 + %(DisableSpecificWarnings);4623 + %(DisableSpecificWarnings);4625 + %(DisableSpecificWarnings);4626 + %(DisableSpecificWarnings);4710 + %(DisableSpecificWarnings);4711 + %(DisableSpecificWarnings);4738 + %(DisableSpecificWarnings);4820 + %(DisableSpecificWarnings);4866 + %(DisableSpecificWarnings);4868 + %(DisableSpecificWarnings);4946 + %(DisableSpecificWarnings);5026 + %(DisableSpecificWarnings);5027 + %(DisableSpecificWarnings);5039 + %(DisableSpecificWarnings);5045 diff --git a/tests/vs/test_release_x86_unrel.vcxproj b/tests/vs/test_release_x86_unrel.vcxproj index 042eb16..59c7fc1 100644 --- a/tests/vs/test_release_x86_unrel.vcxproj +++ b/tests/vs/test_release_x86_unrel.vcxproj @@ -44,6 +44,28 @@ SHOULD_HAVE_EXCEPTIONS=1;%(PreprocessorDefinitions) stdcpp17 true + EnableAllWarnings + %(DisableSpecificWarnings);4127 + %(DisableSpecificWarnings);4324 + %(DisableSpecificWarnings);4464 + %(DisableSpecificWarnings);4505 + %(DisableSpecificWarnings);4514 + %(DisableSpecificWarnings);4577 + %(DisableSpecificWarnings);4582 + %(DisableSpecificWarnings);4623 + %(DisableSpecificWarnings);4625 + %(DisableSpecificWarnings);4626 + %(DisableSpecificWarnings);4710 + %(DisableSpecificWarnings);4711 + %(DisableSpecificWarnings);4738 + %(DisableSpecificWarnings);4820 + %(DisableSpecificWarnings);4866 + %(DisableSpecificWarnings);4868 + %(DisableSpecificWarnings);4946 + %(DisableSpecificWarnings);5026 + %(DisableSpecificWarnings);5027 + %(DisableSpecificWarnings);5039 + %(DisableSpecificWarnings);5045 diff --git a/toml.hpp b/toml.hpp index e042719..ffa4d81 100644 --- a/toml.hpp +++ b/toml.hpp @@ -82,37 +82,51 @@ #define TOML_GCC 0 #endif +#ifdef __has_include + #define TOML_HAS_INCLUDE(header) __has_include(header) +#else + #define TOML_HAS_INCLUDE(header) 0 +#endif + #if TOML_CLANG - #define TOML_PUSH_WARNINGS _Pragma("clang diagnostic push") \ - static_assert(true) + #define TOML_PUSH_WARNINGS \ + _Pragma("clang diagnostic push") \ + static_assert(true) - #define TOML_DISABLE_SWITCH_WARNINGS _Pragma("clang diagnostic ignored \"-Wswitch\"") \ - static_assert(true) + #define TOML_DISABLE_SWITCH_WARNINGS \ + _Pragma("clang diagnostic ignored \"-Wswitch\"") \ + static_assert(true) - #define TOML_DISABLE_INIT_WARNINGS _Pragma("clang diagnostic ignored \"-Wmissing-field-initializers\"") \ - static_assert(true) + #define TOML_DISABLE_INIT_WARNINGS \ + _Pragma("clang diagnostic ignored \"-Wmissing-field-initializers\"") \ + static_assert(true) - #define TOML_DISABLE_ARITHMETIC_WARNINGS _Pragma("clang diagnostic ignored \"-Wfloat-equal\"") \ - _Pragma("clang diagnostic ignored \"-Wdouble-promotion\"") \ - _Pragma("clang diagnostic ignored \"-Wchar-subscripts\"") \ - _Pragma("clang diagnostic ignored \"-Wshift-sign-overflow\"") \ - static_assert(true) + #define TOML_DISABLE_ARITHMETIC_WARNINGS \ + _Pragma("clang diagnostic ignored \"-Wfloat-equal\"") \ + _Pragma("clang diagnostic ignored \"-Wdouble-promotion\"") \ + _Pragma("clang diagnostic ignored \"-Wchar-subscripts\"") \ + _Pragma("clang diagnostic ignored \"-Wshift-sign-overflow\"") \ + static_assert(true) - #define TOML_DISABLE_SHADOW_WARNINGS _Pragma("clang diagnostic ignored \"-Wshadow\"") \ - static_assert(true) + #define TOML_DISABLE_SHADOW_WARNINGS \ + _Pragma("clang diagnostic ignored \"-Wshadow\"") \ + static_assert(true) - #define TOML_DISABLE_SPAM_WARNINGS _Pragma("clang diagnostic ignored \"-Wweak-vtables\"") \ - _Pragma("clang diagnostic ignored \"-Wweak-template-vtables\"") \ - _Pragma("clang diagnostic ignored \"-Wpadded\"") \ - static_assert(true) + #define TOML_DISABLE_SPAM_WARNINGS \ + _Pragma("clang diagnostic ignored \"-Wweak-vtables\"") \ + _Pragma("clang diagnostic ignored \"-Wweak-template-vtables\"") \ + _Pragma("clang diagnostic ignored \"-Wpadded\"") \ + static_assert(true) - #define TOML_POP_WARNINGS _Pragma("clang diagnostic pop") \ - static_assert(true) + #define TOML_POP_WARNINGS \ + _Pragma("clang diagnostic pop") \ + static_assert(true) - #define TOML_DISABLE_WARNINGS TOML_PUSH_WARNINGS; \ - _Pragma("clang diagnostic ignored \"-Weverything\"") \ - static_assert(true) + #define TOML_DISABLE_WARNINGS \ + TOML_PUSH_WARNINGS; \ + _Pragma("clang diagnostic ignored \"-Weverything\"") \ + static_assert(true) #define TOML_ENABLE_WARNINGS TOML_POP_WARNINGS @@ -158,41 +172,75 @@ #define TOML_CPP_VERSION _MSVC_LANG #if TOML_MSVC // !intel-cl - #define TOML_PUSH_WARNINGS __pragma(warning(push)) \ - static_assert(true) + #define TOML_PUSH_WARNINGS \ + __pragma(warning(push)) \ + static_assert(true) - #define TOML_DISABLE_SWITCH_WARNINGS __pragma(warning(disable: 4061)) \ - __pragma(warning(disable: 4063)) \ - __pragma(warning(disable: 26819)) \ - static_assert(true) + #if TOML_HAS_INCLUDE() + #pragma warning(push, 0) + #include + #pragma warning(pop) + #define TOML_DISABLE_CODE_ANALYSIS_WARNINGS \ + __pragma(warning(disable: ALL_CODE_ANALYSIS_WARNINGS)) \ + static_assert(true) + #else + #define TOML_DISABLE_CODE_ANALYSIS_WARNINGS + static_assert(true) + #endif - #define TOML_DISABLE_SPAM_WARNINGS __pragma(warning(disable: 4127)) /* conditional expr is constant */ \ - __pragma(warning(disable: 4324)) /* structure was padded due to alignment specifier */ \ - __pragma(warning(disable: 4348)) \ - __pragma(warning(disable: 4505)) /* unreferenced local function removed */ \ - __pragma(warning(disable: 4514)) /* unreferenced inline function has been removed */ \ - __pragma(warning(disable: 4623)) /* default constructor was implicitly defined as deleted */ \ - __pragma(warning(disable: 4625)) /* copy constructor was implicitly defined as deleted */ \ - __pragma(warning(disable: 4626)) /* assignment operator was implicitly defined as deleted */ \ - __pragma(warning(disable: 4710)) /* function not inlined */ \ - __pragma(warning(disable: 4711)) /* function selected for automatic expansion */ \ - __pragma(warning(disable: 4820)) /* N bytes padding added */ \ - __pragma(warning(disable: 4946)) /* reinterpret_cast used between related classes */ \ - __pragma(warning(disable: 5026)) /* move constructor was implicitly defined as deleted */ \ - __pragma(warning(disable: 5027)) /* move assignment operator was implicitly defined as deleted */ \ - __pragma(warning(disable: 5045)) /* Compiler will insert Spectre mitigation */ \ - __pragma(warning(disable: 26451)) \ - __pragma(warning(disable: 26490)) \ - __pragma(warning(disable: 26495)) \ - __pragma(warning(disable: 26812)) \ - __pragma(warning(disable: 26819)) \ - static_assert(true) + #define TOML_DISABLE_SWITCH_WARNINGS \ + __pragma(warning(disable: 4061)) \ + __pragma(warning(disable: 4062)) \ + __pragma(warning(disable: 4063)) \ + __pragma(warning(disable: 26819)) \ + static_assert(true) - #define TOML_POP_WARNINGS __pragma(warning(pop)) \ - static_assert(true) + #define TOML_DISABLE_SPAM_WARNINGS \ + __pragma(warning(disable: 4127)) /* conditional expr is constant */ \ + __pragma(warning(disable: 4324)) /* structure was padded due to alignment specifier */ \ + __pragma(warning(disable: 4348)) \ + __pragma(warning(disable: 4464)) /* relative include path contains '..' */ \ + __pragma(warning(disable: 4505)) /* unreferenced local function removed */ \ + __pragma(warning(disable: 4514)) /* unreferenced inline function has been removed */ \ + __pragma(warning(disable: 4582)) /* constructor is not implicitly called */ \ + __pragma(warning(disable: 4623)) /* default constructor was implicitly defined as deleted */ \ + __pragma(warning(disable: 4625)) /* copy constructor was implicitly defined as deleted */ \ + __pragma(warning(disable: 4626)) /* assignment operator was implicitly defined as deleted */ \ + __pragma(warning(disable: 4710)) /* function not inlined */ \ + __pragma(warning(disable: 4711)) /* function selected for automatic expansion */ \ + __pragma(warning(disable: 4820)) /* N bytes padding added */ \ + __pragma(warning(disable: 4946)) /* reinterpret_cast used between related classes */ \ + __pragma(warning(disable: 5026)) /* move constructor was implicitly defined as deleted */ \ + __pragma(warning(disable: 5027)) /* move assignment operator was implicitly defined as deleted */ \ + __pragma(warning(disable: 5039)) /* potentially throwing function passed to 'extern "C"' function */ \ + __pragma(warning(disable: 5045)) /* Compiler will insert Spectre mitigation */ \ + __pragma(warning(disable: 26451)) \ + __pragma(warning(disable: 26490)) \ + __pragma(warning(disable: 26495)) \ + __pragma(warning(disable: 26812)) \ + __pragma(warning(disable: 26819)) \ + static_assert(true) - #define TOML_DISABLE_WARNINGS __pragma(warning(push, 0)) \ - static_assert(true) + #define TOML_DISABLE_ARITHMETIC_WARNINGS \ + __pragma(warning(disable: 4365)) /* argument signed/unsigned mismatch */ \ + __pragma(warning(disable: 4738)) /* storing 32-bit float result in memory */ \ + __pragma(warning(disable: 5219)) /* implicit conversion from integral to float */ \ + static_assert(true) + + #define TOML_POP_WARNINGS \ + __pragma(warning(pop)) \ + static_assert(true) + + #define TOML_DISABLE_WARNINGS \ + __pragma(warning(push, 0)) \ + __pragma(warning(disable: 4348)) \ + __pragma(warning(disable: 4668)) \ + __pragma(warning(disable: 5105)) \ + TOML_DISABLE_CODE_ANALYSIS_WARNINGS;\ + TOML_DISABLE_SWITCH_WARNINGS; \ + TOML_DISABLE_SPAM_WARNINGS; \ + TOML_DISABLE_ARITHMETIC_WARNINGS; \ + static_assert(true) #define TOML_ENABLE_WARNINGS TOML_POP_WARNINGS @@ -215,74 +263,87 @@ #if TOML_ICC - #define TOML_PUSH_WARNINGS __pragma(warning(push)) \ - static_assert(true) + #define TOML_PUSH_WARNINGS \ + __pragma(warning(push)) \ + static_assert(true) - #define TOML_DISABLE_SPAM_WARNINGS __pragma(warning(disable: 82)) /* storage class is not first */ \ - __pragma(warning(disable: 111)) /* statement unreachable (false-positive) */ \ - __pragma(warning(disable: 869)) /* unreferenced parameter */ \ - __pragma(warning(disable: 1011)) /* missing return (false-positive) */ \ - __pragma(warning(disable: 2261)) /* assume expr side-effects discarded */ \ - static_assert(true) + #define TOML_DISABLE_SPAM_WARNINGS \ + __pragma(warning(disable: 82)) /* storage class is not first */ \ + __pragma(warning(disable: 111)) /* statement unreachable (false-positive) */ \ + __pragma(warning(disable: 869)) /* unreferenced parameter */ \ + __pragma(warning(disable: 1011)) /* missing return (false-positive) */ \ + __pragma(warning(disable: 2261)) /* assume expr side-effects discarded */ \ + static_assert(true) - #define TOML_POP_WARNINGS __pragma(warning(pop)) \ - static_assert(true) + #define TOML_POP_WARNINGS \ + __pragma(warning(pop)) \ + static_assert(true) - #define TOML_DISABLE_WARNINGS __pragma(warning(push, 0)) \ - static_assert(true) + #define TOML_DISABLE_WARNINGS \ + __pragma(warning(push, 0)) \ + static_assert(true) - #define TOML_ENABLE_WARNINGS TOML_POP_WARNINGS \ - static_assert(true) + #define TOML_ENABLE_WARNINGS \ + TOML_POP_WARNINGS #endif // icc #if TOML_GCC - #define TOML_PUSH_WARNINGS _Pragma("GCC diagnostic push") \ - static_assert(true) + #define TOML_PUSH_WARNINGS \ + _Pragma("GCC diagnostic push") \ + static_assert(true) - #define TOML_DISABLE_SWITCH_WARNINGS _Pragma("GCC diagnostic ignored \"-Wswitch\"") \ - _Pragma("GCC diagnostic ignored \"-Wswitch-enum\"") \ - _Pragma("GCC diagnostic ignored \"-Wswitch-default\"") \ - static_assert(true) + #define TOML_DISABLE_SWITCH_WARNINGS \ + _Pragma("GCC diagnostic ignored \"-Wswitch\"") \ + _Pragma("GCC diagnostic ignored \"-Wswitch-enum\"") \ + _Pragma("GCC diagnostic ignored \"-Wswitch-default\"") \ + static_assert(true) - #define TOML_DISABLE_INIT_WARNINGS _Pragma("GCC diagnostic ignored \"-Wmissing-field-initializers\"") \ - _Pragma("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") \ - _Pragma("GCC diagnostic ignored \"-Wuninitialized\"") \ - static_assert(true) + #define TOML_DISABLE_INIT_WARNINGS \ + _Pragma("GCC diagnostic ignored \"-Wmissing-field-initializers\"") \ + _Pragma("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") \ + _Pragma("GCC diagnostic ignored \"-Wuninitialized\"") \ + static_assert(true) - #define TOML_DISABLE_ARITHMETIC_WARNINGS _Pragma("GCC diagnostic ignored \"-Wfloat-equal\"") \ - _Pragma("GCC diagnostic ignored \"-Wsign-conversion\"") \ - _Pragma("GCC diagnostic ignored \"-Wchar-subscripts\"") \ - static_assert(true) + #define TOML_DISABLE_ARITHMETIC_WARNINGS \ + _Pragma("GCC diagnostic ignored \"-Wfloat-equal\"") \ + _Pragma("GCC diagnostic ignored \"-Wsign-conversion\"") \ + _Pragma("GCC diagnostic ignored \"-Wchar-subscripts\"") \ + static_assert(true) - #define TOML_DISABLE_SHADOW_WARNINGS _Pragma("GCC diagnostic ignored \"-Wshadow\"") \ - static_assert(true) + #define TOML_DISABLE_SHADOW_WARNINGS \ + _Pragma("GCC diagnostic ignored \"-Wshadow\"") \ + static_assert(true) - #define TOML_DISABLE_SPAM_WARNINGS _Pragma("GCC diagnostic ignored \"-Wpadded\"") \ - _Pragma("GCC diagnostic ignored \"-Wcast-align\"") \ - _Pragma("GCC diagnostic ignored \"-Wcomment\"") \ - _Pragma("GCC diagnostic ignored \"-Wtype-limits\"") \ - _Pragma("GCC diagnostic ignored \"-Wuseless-cast\"") \ - _Pragma("GCC diagnostic ignored \"-Wsuggest-attribute=const\"") \ - _Pragma("GCC diagnostic ignored \"-Wsuggest-attribute=pure\"") \ - static_assert(true) + #define TOML_DISABLE_SPAM_WARNINGS \ + _Pragma("GCC diagnostic ignored \"-Wpadded\"") \ + _Pragma("GCC diagnostic ignored \"-Wcast-align\"") \ + _Pragma("GCC diagnostic ignored \"-Wcomment\"") \ + _Pragma("GCC diagnostic ignored \"-Wtype-limits\"") \ + _Pragma("GCC diagnostic ignored \"-Wuseless-cast\"") \ + _Pragma("GCC diagnostic ignored \"-Wsuggest-attribute=const\"") \ + _Pragma("GCC diagnostic ignored \"-Wsuggest-attribute=pure\"") \ + static_assert(true) - #define TOML_POP_WARNINGS _Pragma("GCC diagnostic pop") \ - static_assert(true) + #define TOML_POP_WARNINGS \ + _Pragma("GCC diagnostic pop") \ + static_assert(true) - #define TOML_DISABLE_WARNINGS TOML_PUSH_WARNINGS; \ - _Pragma("GCC diagnostic ignored \"-Wall\"") \ - _Pragma("GCC diagnostic ignored \"-Wextra\"") \ - _Pragma("GCC diagnostic ignored \"-Wpedantic\"") \ - TOML_DISABLE_SWITCH_WARNINGS; \ - TOML_DISABLE_INIT_WARNINGS; \ - TOML_DISABLE_ARITHMETIC_WARNINGS; \ - TOML_DISABLE_SHADOW_WARNINGS; \ - TOML_DISABLE_SPAM_WARNINGS; \ - static_assert(true) + #define TOML_DISABLE_WARNINGS \ + TOML_PUSH_WARNINGS; \ + _Pragma("GCC diagnostic ignored \"-Wall\"") \ + _Pragma("GCC diagnostic ignored \"-Wextra\"") \ + _Pragma("GCC diagnostic ignored \"-Wpedantic\"") \ + TOML_DISABLE_SWITCH_WARNINGS; \ + TOML_DISABLE_INIT_WARNINGS; \ + TOML_DISABLE_ARITHMETIC_WARNINGS; \ + TOML_DISABLE_SHADOW_WARNINGS; \ + TOML_DISABLE_SPAM_WARNINGS; \ + static_assert(true) - #define TOML_ENABLE_WARNINGS TOML_POP_WARNINGS + #define TOML_ENABLE_WARNINGS \ + TOML_POP_WARNINGS #define TOML_ATTR(...) __attribute__((__VA_ARGS__)) #ifndef TOML_ALWAYS_INLINE @@ -382,12 +443,6 @@ is no longer necessary. #endif #undef TOML_CPP_VERSION -#ifdef __has_include - #define TOML_HAS_INCLUDE(header) __has_include(header) -#else - #define TOML_HAS_INCLUDE(header) 0 -#endif - #ifndef TOML_COMPILER_EXCEPTIONS #if defined(__EXCEPTIONS) || defined(__cpp_exceptions) #define TOML_COMPILER_EXCEPTIONS 1 @@ -440,6 +495,9 @@ is no longer necessary. #ifndef TOML_PUSH_WARNINGS #define TOML_PUSH_WARNINGS static_assert(true) #endif +#ifndef TOML_DISABLE_CODE_ANALYSIS_WARNINGS + #define TOML_DISABLE_CODE_ANALYSIS_WARNINGS static_assert(true) +#endif #ifndef TOML_DISABLE_SWITCH_WARNINGS #define TOML_DISABLE_SWITCH_WARNINGS static_assert(true) #endif @@ -11963,19 +12021,19 @@ TOML_NAMESPACE_END; // implementations of windows wide string nonsense #if TOML_WINDOWS_COMPAT -namespace winapi -{ - extern "C" - { - int __stdcall WideCharToMultiByte(unsigned int CodePage, unsigned long dwFlags, const wchar_t* lpWideCharStr, int cchWideChar, - const char* lpMultiByteStr, int cbMultiByte, const char* lpDefaultChar, int* lpUsedDefaultChar); - int __stdcall MultiByteToWideChar(unsigned int CodePage, unsigned long dwFlags, const char* lpMultiByteStr, int cbMultiByte, - const wchar_t* lpWideCharStr, int cchWideChar); - } -} - TOML_IMPL_NAMESPACE_START { + namespace winapi + { + extern "C" + { + int __stdcall WideCharToMultiByte(unsigned int CodePage, unsigned long dwFlags, const wchar_t* lpWideCharStr, int cchWideChar, + char* lpMultiByteStr, int cbMultiByte, const char* lpDefaultChar, int* lpUsedDefaultChar); + int __stdcall MultiByteToWideChar(unsigned int CodePage, unsigned long dwFlags, const char* lpMultiByteStr, int cbMultiByte, + wchar_t* lpWideCharStr, int cchWideChar); + } + } + TOML_API TOML_EXTERNAL_LINKAGE std::string narrow(std::wstring_view str) noexcept @@ -11990,7 +12048,7 @@ TOML_IMPL_NAMESPACE_START if (len) { s.resize(static_cast(len)); - winapi::WideCharToMultiByte(65001, 0, str.data(), static_cast(str.length()), s.data(), len, nullptr, nullptr); + winapi::WideCharToMultiByte(65001, 0, str.data(), static_cast(str.length()), s.data(), len, nullptr, nullptr); } return s; } @@ -12007,7 +12065,7 @@ TOML_IMPL_NAMESPACE_START if (len) { s.resize(static_cast(len)); - winapi::MultiByteToWideChar(65001, 0, str.data(), static_cast(str.length()), s.data(), len); + winapi::MultiByteToWideChar(65001, 0, str.data(), static_cast(str.length()), s.data(), len); } return s; } @@ -12258,6 +12316,7 @@ TOML_POP_WARNINGS; // TOML_DISABLE_SPAM_WARNINGS #undef TOML_CONSTEVAL #undef TOML_CPP #undef TOML_DISABLE_ARITHMETIC_WARNINGS + #undef TOML_DISABLE_CODE_ANALYSIS_WARNINGS #undef TOML_DISABLE_INIT_WARNINGS #undef TOML_DISABLE_SPAM_WARNINGS #undef TOML_DISABLE_SHADOW_WARNINGS diff --git a/tools/generate_windows_test_targets.py b/tools/generate_windows_test_targets.py index e0de93a..bc20e34 100644 --- a/tools/generate_windows_test_targets.py +++ b/tools/generate_windows_test_targets.py @@ -87,6 +87,28 @@ def main(): SHOULD_HAVE_EXCEPTIONS=1;%(PreprocessorDefinitions) std{standard} true + EnableAllWarnings + %(DisableSpecificWarnings);4127 + %(DisableSpecificWarnings);4324 + %(DisableSpecificWarnings);4464 + %(DisableSpecificWarnings);4505 + %(DisableSpecificWarnings);4514 + %(DisableSpecificWarnings);4577 + %(DisableSpecificWarnings);4582 + %(DisableSpecificWarnings);4623 + %(DisableSpecificWarnings);4625 + %(DisableSpecificWarnings);4626 + %(DisableSpecificWarnings);4710 + %(DisableSpecificWarnings);4711 + %(DisableSpecificWarnings);4738 + %(DisableSpecificWarnings);4820 + %(DisableSpecificWarnings);4866 + %(DisableSpecificWarnings);4868 + %(DisableSpecificWarnings);4946 + %(DisableSpecificWarnings);5026 + %(DisableSpecificWarnings);5027 + %(DisableSpecificWarnings);5039 + %(DisableSpecificWarnings);5045