Skip to content

Commit d4ce5a3

Browse files
authored
Merge branch 'main' into test-sparse
2 parents 01eeb65 + 146e395 commit d4ce5a3

29 files changed

+99
-90
lines changed

.github/workflows/sonar.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,4 +79,4 @@ jobs:
7979
uses: SonarSource/sonarqube-scan-action@v5
8080
with:
8181
args: >
82-
--define sonar.cfamily.compile-commands="${{ env.BUILD_WRAPPER_OUT_DIR }}/compile_commands.json"
82+
--define sonar.cfamily.compile-commands=${{ env.BUILD_WRAPPER_OUT_DIR }}/compile_commands.json

power_grid_model_c/power_grid_model/include/power_grid_model/auxiliary/serialization/deserializer.hpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -986,7 +986,7 @@ class Deserializer {
986986
default: {
987987
using namespace std::string_literals;
988988
throw SerializationError("String data input not supported for serialization format "s +
989-
std::to_string(static_cast<IntS>(serialization_format)));
989+
std::to_string(std::to_underlying(serialization_format)));
990990
}
991991
}
992992
}
@@ -1001,7 +1001,7 @@ class Deserializer {
10011001
default: {
10021002
using namespace std::string_literals;
10031003
throw SerializationError("Buffer data input not supported for serialization format "s +
1004-
std::to_string(static_cast<IntS>(serialization_format)));
1004+
std::to_string(std::to_underlying(serialization_format)));
10051005
}
10061006
}
10071007
}

power_grid_model_c/power_grid_model/include/power_grid_model/auxiliary/serialization/serializer.hpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -257,7 +257,7 @@ class Serializer {
257257
default: {
258258
using namespace std::string_literals;
259259
throw SerializationError("Unsupported serialization format: "s +
260-
std::to_string(static_cast<IntS>(serialization_format_)));
260+
std::to_string(std::to_underlying(serialization_format_)));
261261
}
262262
}
263263

@@ -273,7 +273,7 @@ class Serializer {
273273
default: {
274274
using namespace std::string_literals;
275275
throw SerializationError("Serialization format "s +
276-
std::to_string(static_cast<IntS>(serialization_format_)) +
276+
std::to_string(std::to_underlying(serialization_format_)) +
277277
" does not support binary buffer output"s);
278278
}
279279
}
@@ -288,7 +288,7 @@ class Serializer {
288288
default: {
289289
using namespace std::string_literals;
290290
throw SerializationError("Serialization format "s +
291-
std::to_string(static_cast<IntS>(serialization_format_)) +
291+
std::to_string(std::to_underlying(serialization_format_)) +
292292
" does not support string output"s);
293293
}
294294
}
@@ -598,7 +598,7 @@ class Serializer {
598598
}
599599

600600
static bool check_all_nan(AttributeBuffer<void const> const& attribute_buffer, Idx idx, Idx size) {
601-
return ctype_func_selector(attribute_buffer.meta_attribute->ctype, [&]<class T> {
601+
return ctype_func_selector(attribute_buffer.meta_attribute->ctype, [&attribute_buffer, idx, size]<class T> {
602602
return std::ranges::all_of(
603603
std::span<T const>{reinterpret_cast<T const*>(attribute_buffer.data) + idx, static_cast<size_t>(size)},
604604
[](auto const& x) { return is_nan(x); });

power_grid_model_c/power_grid_model/include/power_grid_model/common/exception.hpp

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
#include <format>
1212
#include <sstream>
1313
#include <string>
14+
#include <utility>
1415

1516
namespace power_grid_model {
1617
class PowerGridError : public std::exception {
@@ -53,7 +54,12 @@ class MissingCaseForEnumError : public InvalidArguments {
5354
public:
5455
template <typename T>
5556
MissingCaseForEnumError(std::string_view method, T const& value)
56-
: InvalidArguments{method, std::format("{} #{:d}", typeid(T).name(), static_cast<IntS>(value))} {}
57+
: InvalidArguments{method, std::format("{} #{:d}", typeid(T).name(), value)} {}
58+
59+
template <typename T>
60+
requires std::is_enum_v<T>
61+
MissingCaseForEnumError(std::string_view method, T const& value)
62+
: InvalidArguments{method, std::format("{} #{:d}", typeid(T).name(), std::to_underlying(value))} {}
5763
};
5864

5965
class ConflictVoltage : public PowerGridError {
@@ -147,7 +153,7 @@ class InvalidMeasuredTerminalType : public PowerGridError {
147153
public:
148154
InvalidMeasuredTerminalType(MeasuredTerminalType const terminal_type, std::string_view sensor)
149155
: PowerGridError{std::format("{} measurement is not supported for object of type {}", sensor,
150-
static_cast<IntS>(terminal_type))} {}
156+
std::to_underlying(terminal_type))} {}
151157
};
152158

153159
class InvalidRegulatedObject : public PowerGridError {
@@ -218,17 +224,18 @@ class InvalidShortCircuitType : public PowerGridError {
218224
public:
219225
explicit InvalidShortCircuitType(FaultType short_circuit_type)
220226
: PowerGridError{
221-
std::format("The short circuit type ({}) is invalid!\n", static_cast<IntS>(short_circuit_type))} {}
227+
std::format("The short circuit type ({}) is invalid!\n", std::to_underlying(short_circuit_type))} {}
222228
InvalidShortCircuitType(bool sym, FaultType short_circuit_type)
223229
: PowerGridError{std::format("The short circuit type ({}) does not match the calculation type (symmetric={})\n",
224-
static_cast<IntS>(short_circuit_type), static_cast<int>(sym))} {}
230+
std::to_underlying(short_circuit_type), static_cast<int>(sym))} {}
225231
};
226232

227233
class InvalidShortCircuitPhases : public PowerGridError {
228234
public:
229235
InvalidShortCircuitPhases(FaultType short_circuit_type, FaultPhase short_circuit_phases)
230236
: PowerGridError{std::format("The short circuit phases ({}) do not match the short circuit type ({})\n",
231-
static_cast<IntS>(short_circuit_phases), static_cast<IntS>(short_circuit_type))} {}
237+
std::to_underlying(short_circuit_phases),
238+
std::to_underlying(short_circuit_type))} {}
232239
};
233240

234241
class InvalidShortCircuitPhaseOrType : public PowerGridError {
@@ -269,8 +276,8 @@ class TapSearchStrategyIncompatibleError : public InvalidArguments {
269276
public:
270277
template <typename T1, typename T2>
271278
TapSearchStrategyIncompatibleError(std::string_view method, T1 const& value1, T2 const& value2)
272-
: InvalidArguments{method, std::format("{} #{} and {} #{}", typeid(T1).name(), static_cast<IntS>(value1),
273-
typeid(T2).name(), static_cast<IntS>(value2))} {}
279+
: InvalidArguments{method, std::format("{} #{} and {} #{}", typeid(T1).name(), std::to_underlying(value1),
280+
typeid(T2).name(), std::to_underlying(value2))} {}
274281
};
275282

276283
} // namespace power_grid_model

power_grid_model_c/power_grid_model/include/power_grid_model/common/grouped_index_vector.hpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -266,10 +266,10 @@ static_assert(grouped_idx_vector_type<DenseGroupedIdxVector>);
266266

267267
inline auto enumerated_zip_sequence(grouped_idx_vector_type auto const& first,
268268
grouped_idx_vector_type auto const&... rest) {
269-
assert(((first.size() == rest.size()) && ...));
270-
271-
auto const indices = IdxRange{first.size()};
272-
return std::views::zip(indices, first, rest...);
269+
if constexpr (sizeof...(rest) > 0) {
270+
assert(((first.size() == rest.size()) && ...));
271+
}
272+
return std::views::zip(IdxRange{first.size()}, first, rest...);
273273
}
274274

275275
} // namespace power_grid_model

power_grid_model_c/power_grid_model/include/power_grid_model/common/multi_threaded_logging.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ class MultiThreadedLoggerImpl : public MultiThreadedLogger {
2424
ThreadLogger& operator=(ThreadLogger const&) = default;
2525
ThreadLogger(ThreadLogger&&) noexcept = default;
2626
ThreadLogger& operator=(ThreadLogger&&) noexcept = default;
27-
~ThreadLogger() override { sync(); }
27+
~ThreadLogger() noexcept override { sync(); }
2828
void sync() const { parent_->sync(*this); }
2929

3030
private:

power_grid_model_c/power_grid_model/include/power_grid_model/common/three_phase_tensor.hpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111

1212
#include <cmath>
1313
#include <complex>
14+
#include <utility>
1415

1516
namespace power_grid_model {
1617

@@ -354,7 +355,7 @@ constexpr bool is_nan(IntS x) { return x == na_IntS; }
354355
template <class Enum>
355356
requires std::same_as<std::underlying_type_t<Enum>, IntS>
356357
constexpr bool is_nan(Enum x) {
357-
return static_cast<IntS>(x) == na_IntS;
358+
return std::to_underlying(x) == na_IntS;
358359
}
359360
constexpr bool is_nan(Idx x) { return x == na_Idx; }
360361

power_grid_model_c/power_grid_model/include/power_grid_model/component/base.hpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
#include "../common/enum.hpp"
1414

1515
namespace power_grid_model {
16+
constexpr IntS status_to_int(bool status) { return status ? IntS{1} : IntS{0}; }
1617

1718
class Base {
1819
public:
@@ -28,7 +29,7 @@ class Base {
2829
virtual ~Base() = default;
2930
constexpr ID id() const noexcept { return id_; }
3031
constexpr BaseOutput base_output(bool is_energized) const {
31-
return BaseOutput{.id = id_, .energized = static_cast<IntS>(is_energized)};
32+
return BaseOutput{.id = id_, .energized = status_to_int(is_energized)};
3233
}
3334
virtual bool energized(bool is_connected_to_source) const = 0;
3435

power_grid_model_c/power_grid_model/include/power_grid_model/component/branch.hpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -193,8 +193,8 @@ class Branch : public Base {
193193
auto inverse(std::convertible_to<BranchUpdate> auto update_data) const {
194194
assert(update_data.id == this->id() || is_nan(update_data.id));
195195

196-
set_if_not_nan(update_data.from_status, static_cast<IntS>(from_status_));
197-
set_if_not_nan(update_data.to_status, static_cast<IntS>(to_status_));
196+
set_if_not_nan(update_data.from_status, status_to_int(from_status_));
197+
set_if_not_nan(update_data.to_status, status_to_int(to_status_));
198198

199199
return update_data;
200200
}

power_grid_model_c/power_grid_model/include/power_grid_model/component/branch3.hpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -215,9 +215,9 @@ class Branch3 : public Base {
215215
auto inverse(std::convertible_to<Branch3Update> auto update_data) const {
216216
assert(update_data.id == this->id() || is_nan(update_data.id));
217217

218-
set_if_not_nan(update_data.status_1, static_cast<IntS>(status_1_));
219-
set_if_not_nan(update_data.status_2, static_cast<IntS>(status_2_));
220-
set_if_not_nan(update_data.status_3, static_cast<IntS>(status_3_));
218+
set_if_not_nan(update_data.status_1, status_to_int(status_1_));
219+
set_if_not_nan(update_data.status_2, status_to_int(status_2_));
220+
set_if_not_nan(update_data.status_3, status_to_int(status_3_));
221221

222222
return update_data;
223223
}

0 commit comments

Comments
 (0)