From 761e576991a9140528ca1b1e8e122e72a027fc1a Mon Sep 17 00:00:00 2001 From: ToruNiina Date: Fri, 10 Jul 2020 15:07:13 +0900 Subject: [PATCH 1/2] fix: workaround for windows.h that defines min/max related to #123 --- toml/region.hpp | 2 +- toml/serializer.hpp | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/toml/region.hpp b/toml/region.hpp index 68defa5..c87547a 100644 --- a/toml/region.hpp +++ b/toml/region.hpp @@ -498,7 +498,7 @@ inline std::string format_underline(const std::string& message, { // invalid // ~~~~~~~ - const auto underline_len = std::min(reg->size(), reg->line().size()); + const auto underline_len = (std::min)(reg->size(), reg->line().size()); retval << color::bold << color::red << make_string(underline_len, '~') << color::reset; } diff --git a/toml/serializer.hpp b/toml/serializer.hpp index 46a2b70..286c4ca 100644 --- a/toml/serializer.hpp +++ b/toml/serializer.hpp @@ -555,7 +555,7 @@ struct serializer for(const auto& item : v) { if(is_first) {is_first = false;} else {token += ',';} - token += visit(serializer(std::numeric_limits::max(), + token += visit(serializer((std::numeric_limits::max)(), this->float_prec_, true), item); } token += ']'; @@ -575,7 +575,7 @@ struct serializer if(is_first) {is_first = false;} else {token += ',';} token += format_key(kv.first); token += '='; - token += visit(serializer(std::numeric_limits::max(), + token += visit(serializer((std::numeric_limits::max)(), this->float_prec_, true), kv.second); } token += '}'; From 93a9f2711c83e516e0b3dfb6b844cd47ab67abaa Mon Sep 17 00:00:00 2001 From: ToruNiina Date: Fri, 10 Jul 2020 15:11:14 +0900 Subject: [PATCH 2/2] test: add windows.h test --- tests/CMakeLists.txt | 6 ++++++ tests/test_windows.cpp | 12 ++++++++++++ 2 files changed, 18 insertions(+) create mode 100644 tests/test_windows.cpp diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 544d56c..c728d20 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -183,3 +183,9 @@ add_executable(test_multiple_translation_unit test_multiple_translation_unit_1.cpp test_multiple_translation_unit_2.cpp) target_link_libraries(test_multiple_translation_unit toml11::toml11) + +if(WIN32) + add_executable(test_windows test_windows.cpp) + target_link_libraries(test_windows toml11::toml11) +endif() + diff --git a/tests/test_windows.cpp b/tests/test_windows.cpp new file mode 100644 index 0000000..158c115 --- /dev/null +++ b/tests/test_windows.cpp @@ -0,0 +1,12 @@ +#include +#include +#include + +int main() +{ + using namespace toml::literals::toml_literals; + const auto data = u8R"(windows = "defines min and max as a macro")"_toml; + + std::cout << toml::find(data, "windows") << std::endl; + return 0; +}