From 15d248e7582f515a72d959eba5fc0b4db9e31aa0 Mon Sep 17 00:00:00 2001 From: Tony Xiang <19280867+TonyXiang8787@users.noreply.github.com> Date: Fri, 21 Mar 2025 21:56:14 +0100 Subject: [PATCH 1/4] Use c++17 in package tests Signed-off-by: Tony Xiang <19280867+TonyXiang8787@users.noreply.github.com> --- tests/package_tests/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/package_tests/CMakeLists.txt b/tests/package_tests/CMakeLists.txt index 605c30420..33af5f570 100644 --- a/tests/package_tests/CMakeLists.txt +++ b/tests/package_tests/CMakeLists.txt @@ -6,7 +6,7 @@ cmake_minimum_required (VERSION 3.23) project(power_grid_model_package_tests) -set(CMAKE_CXX_STANDARD 20) +set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_EXTENSIONS OFF) set(CMAKE_CXX_VISIBILITY_PRESET hidden) From fd4848a95da0035359e00a5a76538c74b4a7abfd Mon Sep 17 00:00:00 2001 From: Martijn Govers Date: Mon, 24 Mar 2025 10:09:48 +0100 Subject: [PATCH 2/4] document C++17 in c++ API + fix compatibility Signed-off-by: Martijn Govers --- .../power_grid_model_cpp/CMakeLists.txt | 1 + .../include/power_grid_model_cpp/utils.hpp | 17 +++++++++++++---- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/power_grid_model_c/power_grid_model_cpp/CMakeLists.txt b/power_grid_model_c/power_grid_model_cpp/CMakeLists.txt index 989ba8572..7c8a726ca 100644 --- a/power_grid_model_c/power_grid_model_cpp/CMakeLists.txt +++ b/power_grid_model_c/power_grid_model_cpp/CMakeLists.txt @@ -30,6 +30,7 @@ target_sources(power_grid_model_cpp PUBLIC set_target_properties(power_grid_model_cpp PROPERTIES VERSION ${PGM_VERSION} SOVERSION ${PGM_VERSION} + CXX_STANDARD 17 ) diff --git a/power_grid_model_c/power_grid_model_cpp/include/power_grid_model_cpp/utils.hpp b/power_grid_model_c/power_grid_model_cpp/include/power_grid_model_cpp/utils.hpp index 1f943f688..5166f2003 100644 --- a/power_grid_model_c/power_grid_model_cpp/include/power_grid_model_cpp/utils.hpp +++ b/power_grid_model_c/power_grid_model_cpp/include/power_grid_model_cpp/utils.hpp @@ -31,10 +31,19 @@ constexpr double nan = std::numeric_limits::quiet_NaN(); constexpr int8_t na_IntS = std::numeric_limits::min(); constexpr ID na_IntID = std::numeric_limits::min(); -template T> constexpr T nan_value() { return nan; } -template > T> constexpr T nan_value() { return {nan, nan, nan}; } -template T> constexpr T nan_value() { return na_IntID; } -template T> constexpr T nan_value() { return na_IntS; } +template constexpr T nan_value() { + if constexpr (std::is_same_v) { + return nan; + } else if constexpr (std::is_same_v) { + return na_IntID; + } else if constexpr (std::is_same_v) { + return na_IntS; + } else if constexpr (std::is_same_v>) { + return std::array{nan, nan, nan}; + } else { + static_assert(false, "Unsupported type for nan_value"); + } +} class UnsupportedPGM_CType : public PowerGridError { public: From 3cc431a6c78d40a547942125e047406e4d312fb6 Mon Sep 17 00:00:00 2001 From: Martijn Govers Date: Mon, 24 Mar 2025 10:26:51 +0100 Subject: [PATCH 3/4] revert designated initializers for c++17 code (clang-tidy is OK) Signed-off-by: Martijn Govers --- .../include/power_grid_model_cpp/handle.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/power_grid_model_c/power_grid_model_cpp/include/power_grid_model_cpp/handle.hpp b/power_grid_model_c/power_grid_model_cpp/include/power_grid_model_cpp/handle.hpp index 9275a0347..47108cc59 100644 --- a/power_grid_model_c/power_grid_model_cpp/include/power_grid_model_cpp/handle.hpp +++ b/power_grid_model_c/power_grid_model_cpp/include/power_grid_model_cpp/handle.hpp @@ -71,8 +71,8 @@ class Handle { auto const* const failed_scenario_seqs = PGM_failed_scenarios(handle_ptr); auto const* const failed_scenario_messages = PGM_batch_errors(handle_ptr); for (Idx i = 0; i < n_failed_scenarios; ++i) { - failed_scenarios[i] = PowerGridBatchError::FailedScenario{.scenario = failed_scenario_seqs[i], - .error_message = failed_scenario_messages[i]}; + failed_scenarios[i] = + PowerGridBatchError::FailedScenario{failed_scenario_seqs[i], failed_scenario_messages[i]}; } clear_error(); throw PowerGridBatchError{error_message, std::move(failed_scenarios)}; From ba4203aff5993fb7601663c2166702212456735a Mon Sep 17 00:00:00 2001 From: Martijn Govers Date: Mon, 24 Mar 2025 10:27:50 +0100 Subject: [PATCH 4/4] revert designated initializers for c++17 code (clang-tidy is OK) Signed-off-by: Martijn Govers --- .../include/power_grid_model_cpp/serialization.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/power_grid_model_c/power_grid_model_cpp/include/power_grid_model_cpp/serialization.hpp b/power_grid_model_c/power_grid_model_cpp/include/power_grid_model_cpp/serialization.hpp index d1c3181cb..46d1316d2 100644 --- a/power_grid_model_c/power_grid_model_cpp/include/power_grid_model_cpp/serialization.hpp +++ b/power_grid_model_c/power_grid_model_cpp/include/power_grid_model_cpp/serialization.hpp @@ -116,7 +116,7 @@ inline OwningDataset create_owning_dataset(DatasetWritable& writable_dataset) { writable_dataset.set_buffer(component_name, indptr, current_buffer); dataset_mutable.add_buffer(component_name, elements_per_scenario, component_size, indptr, current_buffer); } - return OwningDataset{.dataset = std::move(dataset_mutable), .storage = std::move(storage)}; + return OwningDataset{std::move(dataset_mutable), std::move(storage)}; } } // namespace power_grid_model_cpp