Skip to content

Commit dab30e2

Browse files
authored
Merge pull request #926 from PowerGridModel/revert-922-feature/clang-tidy-19
Revert "Support for clang tidy 19"
2 parents b2e27f5 + e77ac70 commit dab30e2

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

59 files changed

+332
-565
lines changed

.clang-tidy

-3
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
Checks: '
66
-*,
77
boost-*,
8-
-boost-use-ranges,
98
bugprone-*,
109
-bugprone-easily-swappable-parameters,
1110
-bugprone-exception-escape,
@@ -56,8 +55,6 @@ readability-*,
5655
-readability-function-cognitive-complexity,
5756
-readability-identifier-length,
5857
-readability-magic-numbers,
59-
-readability-math-missing-parentheses,
60-
-readability-redundant-member-init,
6158
-bugprone-unchecked-optional-access,
6259
'
6360

power_grid_model_c/power_grid_model/include/power_grid_model/auxiliary/dataset.hpp

+2-3
Original file line numberDiff line numberDiff line change
@@ -535,9 +535,8 @@ template <dataset_type_tag dataset_type_> class Dataset {
535535
throw DatasetError{"Cannot have duplicated components!\n"};
536536
}
537537
check_uniform_integrity(elements_per_scenario, total_elements);
538-
dataset_info_.component_info.push_back({.component = &dataset_info_.dataset->get_component(component),
539-
.elements_per_scenario = elements_per_scenario,
540-
.total_elements = total_elements});
538+
dataset_info_.component_info.push_back(
539+
{&dataset_info_.dataset->get_component(component), elements_per_scenario, total_elements});
541540
buffers_.push_back(Buffer{});
542541
}
543542

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

+5-22
Original file line numberDiff line numberDiff line change
@@ -186,10 +186,6 @@ template <class T> struct DefaultErrorVisitor : DefaultNullVisitor {
186186
bool throw_error() { throw SerializationError{(static_cast<T&>(*this)).get_err_msg()}; }
187187

188188
std::string get_err_msg() { return std::string{T::static_err_msg}; }
189-
190-
private:
191-
DefaultErrorVisitor() = default;
192-
friend T; // CRTP compliance
193189
};
194190

195191
struct visit_map_t;
@@ -242,8 +238,6 @@ struct MapArrayVisitor : DefaultErrorVisitor<MapArrayVisitor<map_array>> {
242238
assert(size == 0);
243239
return true;
244240
}
245-
246-
MapArrayVisitor() = default;
247241
};
248242

249243
struct StringVisitor : DefaultErrorVisitor<StringVisitor> {
@@ -254,8 +248,6 @@ struct StringVisitor : DefaultErrorVisitor<StringVisitor> {
254248
str = {v, size};
255249
return true;
256250
}
257-
258-
StringVisitor() = default;
259251
};
260252

261253
struct BoolVisitor : DefaultErrorVisitor<BoolVisitor> {
@@ -266,8 +258,6 @@ struct BoolVisitor : DefaultErrorVisitor<BoolVisitor> {
266258
value = v;
267259
return true;
268260
}
269-
270-
BoolVisitor() = default;
271261
};
272262

273263
template <class T> struct ValueVisitor;
@@ -292,8 +282,6 @@ template <std::integral T> struct ValueVisitor<T> : DefaultErrorVisitor<ValueVis
292282
value = static_cast<T>(v);
293283
return true;
294284
}
295-
296-
ValueVisitor(T& v) : DefaultErrorVisitor<ValueVisitor<T>>{}, value{v} {}
297285
};
298286

299287
template <> struct ValueVisitor<double> : DefaultErrorVisitor<ValueVisitor<double>> {
@@ -318,8 +306,6 @@ template <> struct ValueVisitor<double> : DefaultErrorVisitor<ValueVisitor<doubl
318306
value = v;
319307
return true;
320308
}
321-
322-
ValueVisitor(double& v) : DefaultErrorVisitor<ValueVisitor<double>>{}, value{v} {}
323309
};
324310

325311
template <> struct ValueVisitor<RealValue<asymmetric_t>> : DefaultErrorVisitor<ValueVisitor<RealValue<asymmetric_t>>> {
@@ -371,8 +357,6 @@ template <> struct ValueVisitor<RealValue<asymmetric_t>> : DefaultErrorVisitor<V
371357
value[idx] = v;
372358
return true;
373359
}
374-
375-
ValueVisitor(RealValue<asymmetric_t>& v) : DefaultErrorVisitor<ValueVisitor<RealValue<asymmetric_t>>>{}, value{v} {}
376360
};
377361

378362
} // namespace detail
@@ -675,8 +659,7 @@ class Deserializer {
675659
size_t const scenario_offset = offset_;
676660
// skip all the real content but check if it has map
677661
bool const has_map = parse_skip_check_map();
678-
count_per_scenario.push_back(
679-
{.component = component_key_, .size = component_size, .offset = scenario_offset, .has_map = has_map});
662+
count_per_scenario.push_back({component_key_, component_size, scenario_offset, has_map});
680663
}
681664
component_key_ = {};
682665
return count_per_scenario;
@@ -725,8 +708,8 @@ class Deserializer {
725708
elements_per_scenario * batch_size; // multiply
726709
handler.add_component_info(component_key_, elements_per_scenario, total_elements);
727710
// check if all scenarios only contain array data
728-
bool const only_values_in_data =
729-
std::ranges::none_of(component_byte_meta, [](auto const& x) { return x.has_map; });
711+
bool const only_values_in_data = std::none_of(component_byte_meta.cbegin(), component_byte_meta.cend(),
712+
[](auto const& x) { return x.has_map; });
730713
msg_data_offsets_.push_back(std::move(component_byte_meta));
731714
// enable attribute indications if possible
732715
if (only_values_in_data) {
@@ -960,7 +943,7 @@ class Deserializer {
960943

961944
ctype_func_selector(attribute.ctype, [&buffer_view, &component, &attribute, this]<class T> {
962945
ValueVisitor<T> visitor{
963-
attribute.get_attribute<T>(component.advance_ptr(buffer_view.buffer->data, buffer_view.idx))};
946+
{}, attribute.get_attribute<T>(component.advance_ptr(buffer_view.buffer->data, buffer_view.idx))};
964947
msgpack::parse(data_, size_, offset_, visitor);
965948
});
966949
}
@@ -971,7 +954,7 @@ class Deserializer {
971954
assert(buffer.meta_attribute != nullptr);
972955

973956
ctype_func_selector(buffer.meta_attribute->ctype, [&buffer, &idx, this]<class T> {
974-
ValueVisitor<T> visitor{*(reinterpret_cast<T*>(buffer.data) + idx)};
957+
ValueVisitor<T> visitor{{}, *(reinterpret_cast<T*>(buffer.data) + idx)};
975958
msgpack::parse(data_, size_, offset_, visitor);
976959
});
977960
}

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

+4-13
Original file line numberDiff line numberDiff line change
@@ -73,19 +73,13 @@ struct MapArray {
7373
bool begin{true};
7474
};
7575

76-
template <typename T> struct NullVisitor : msgpack::null_visitor {
77-
private:
78-
NullVisitor() = default;
79-
friend T; // CRTP compliance
80-
};
81-
82-
struct JsonConverter : NullVisitor<JsonConverter> {
76+
struct JsonConverter : msgpack::null_visitor {
8377
static constexpr char sep_char = ' ';
8478

8579
Idx indent{};
8680
Idx max_indent_level{};
87-
std::stringstream ss{};
88-
std::stack<MapArray> map_array{};
81+
std::stringstream ss{}; // NOLINT(readability-redundant-member-init)
82+
std::stack<MapArray> map_array{}; // NOLINT(readability-redundant-member-init)
8983

9084
void print_indent() {
9185
if (indent < 0) {
@@ -200,9 +194,6 @@ struct JsonConverter : NullVisitor<JsonConverter> {
200194
ss << '}';
201195
return true;
202196
}
203-
204-
JsonConverter(Idx indent_, Idx max_indent_level_)
205-
: NullVisitor<JsonConverter>{}, indent{indent_}, max_indent_level{max_indent_level_} {}
206197
};
207198

208199
} // namespace json_converter
@@ -389,7 +380,7 @@ class Serializer {
389380
std::string const& get_json(bool use_compact_list, Idx indent) {
390381
if (json_buffer_.empty() || (use_compact_list_ != use_compact_list) || (json_indent_ != indent)) {
391382
Idx const max_indent_level = dataset_handler_.is_batch() ? 4 : 3;
392-
json_converter::JsonConverter visitor{indent, max_indent_level};
383+
json_converter::JsonConverter visitor{{}, indent, max_indent_level};
393384
auto const msgpack_data = get_msgpack(use_compact_list);
394385
msgpack::parse(msgpack_data.data(), msgpack_data.size(), visitor);
395386
json_buffer_ = visitor.ss.str();

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ struct Idx2D {
3131
};
3232

3333
struct Idx2DHash {
34-
std::size_t operator()(Idx2D const& idx) const {
34+
std::size_t operator()(const Idx2D& idx) const {
3535
size_t const h1 = std::hash<Idx>{}(idx.group);
3636
size_t const h2 = std::hash<Idx>{}(idx.pos);
3737
return h1 ^ (h2 << 1);

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

+6-6
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
#include "enum.hpp"
99

1010
#include <exception>
11-
#include <format>
1211
#include <sstream>
1312
#include <string>
1413

@@ -24,7 +23,7 @@ inline auto to_string(std::integral auto x) { return std::to_string(x); }
2423

2524
class PowerGridError : public std::exception {
2625
public:
27-
void append_msg(std::string_view msg) { msg_ = std::format("{}{}", msg_, msg); }
26+
void append_msg(std::string_view msg) { msg_ += msg; }
2827
char const* what() const noexcept final { return msg_.c_str(); }
2928

3029
private:
@@ -45,16 +44,17 @@ class InvalidArguments : public PowerGridError {
4544

4645
template <class... Options>
4746
requires(std::same_as<std::remove_cvref_t<Options>, TypeValuePair> && ...)
48-
InvalidArguments(std::string const& method, Options const&... options)
47+
InvalidArguments(std::string const& method, Options&&... options)
4948
: InvalidArguments{method, "the following combination of options"} {
50-
(append_msg(" " + options.name + ": " + options.value + "\n"), ...);
49+
(append_msg(" " + std::forward<Options>(options).name + ": " + std::forward<Options>(options).value + "\n"),
50+
...);
5151
}
5252
};
5353

5454
class MissingCaseForEnumError : public InvalidArguments {
5555
public:
5656
template <typename T>
57-
MissingCaseForEnumError(std::string const& method, T const& value)
57+
MissingCaseForEnumError(std::string const& method, const T& value)
5858
: InvalidArguments{method, std::string{typeid(T).name()} + " #" + detail::to_string(static_cast<IntS>(value))} {
5959
}
6060
};
@@ -292,7 +292,7 @@ class UnreachableHit : public PowerGridError {
292292
class TapSearchStrategyIncompatibleError : public InvalidArguments {
293293
public:
294294
template <typename T1, typename T2>
295-
TapSearchStrategyIncompatibleError(std::string const& method, T1 const& value1, T2 const& value2)
295+
TapSearchStrategyIncompatibleError(std::string const& method, const T1& value1, const T2& value2)
296296
: InvalidArguments{
297297
method, std::string{typeid(T1).name()} + " #" + detail::to_string(static_cast<IntS>(value1)) + " and " +
298298
std::string{typeid(T2).name()} + " #" + detail::to_string(static_cast<IntS>(value2))} {}

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

+17-15
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ class SparseGroupedIdxVector {
132132
: indptr_{sparse_group_elements.empty() ? IdxVector{0} : std::move(sparse_group_elements)} {
133133
assert(size() >= 0);
134134
assert(element_size() >= 0);
135-
assert(std::ranges::is_sorted(indptr_));
135+
assert(std::is_sorted(std::begin(indptr_), std::end(indptr_)));
136136
}
137137
SparseGroupedIdxVector(from_sparse_t /* tag */, IdxVector sparse_group_elements)
138138
: SparseGroupedIdxVector{std::move(sparse_group_elements)} {}
@@ -154,44 +154,46 @@ class DenseGroupedIdxVector {
154154
explicit constexpr GroupIterator(IdxVector const& dense_vector, Idx group)
155155
: dense_vector_{&dense_vector},
156156
group_{group},
157-
group_range_{std::ranges::equal_range(*dense_vector_, group)} {}
157+
group_range_{std::equal_range(std::cbegin(*dense_vector_), std::cend(*dense_vector_), group)} {}
158158

159159
private:
160160
using group_iterator = IdxVector::const_iterator;
161161

162162
IdxVector const* dense_vector_{};
163163
Idx group_{};
164-
std::ranges::subrange<group_iterator> group_range_;
164+
std::pair<group_iterator, group_iterator> group_range_;
165165

166166
friend class boost::iterator_core_access;
167167

168168
auto dereference() const -> iterator {
169169
assert(dense_vector_ != nullptr);
170170
return boost::counting_range(
171-
narrow_cast<Idx>(std::distance(std::cbegin(*dense_vector_), group_range_.begin())),
172-
narrow_cast<Idx>(std::distance(std::cbegin(*dense_vector_), group_range_.end())));
171+
narrow_cast<Idx>(std::distance(std::cbegin(*dense_vector_), group_range_.first)),
172+
narrow_cast<Idx>(std::distance(std::cbegin(*dense_vector_), group_range_.second)));
173173
}
174174
constexpr auto equal(GroupIterator const& other) const { return group_ == other.group_; }
175175
constexpr auto distance_to(GroupIterator const& other) const { return other.group_ - group_; }
176176

177177
constexpr void increment() {
178178
++group_;
179-
group_range_ = {group_range_.end(), std::find_if(group_range_.end(), std::cend(*dense_vector_),
180-
[group = group_](Idx value) { return value > group; })};
179+
group_range_ = std::make_pair(group_range_.second,
180+
std::find_if(group_range_.second, std::cend(*dense_vector_),
181+
[group = group_](Idx value) { return value > group; }));
181182
}
182183
constexpr void decrement() {
183184
--group_;
184-
group_range_ = {std::find_if(std::make_reverse_iterator(group_range_.begin()), std::crend(*dense_vector_),
185-
[group = group_](Idx value) { return value < group; })
186-
.base(),
187-
group_range_.begin()};
185+
group_range_ =
186+
std::make_pair(std::find_if(std::make_reverse_iterator(group_range_.first), std::crend(*dense_vector_),
187+
[group = group_](Idx value) { return value < group; })
188+
.base(),
189+
group_range_.first);
188190
}
189191
constexpr void advance(Idx n) {
190-
auto const start = n > 0 ? group_range_.end() : std::cbegin(*dense_vector_);
191-
auto const stop = n < 0 ? group_range_.begin() : std::cend(*dense_vector_);
192+
auto const start = n > 0 ? group_range_.second : std::cbegin(*dense_vector_);
193+
auto const stop = n < 0 ? group_range_.first : std::cend(*dense_vector_);
192194

193195
group_ += n;
194-
group_range_ = std::ranges::equal_range(std::ranges::subrange{start, stop}, group_);
196+
group_range_ = std::equal_range(start, stop, group_);
195197
}
196198
};
197199

@@ -213,7 +215,7 @@ class DenseGroupedIdxVector {
213215
: num_groups_{num_groups}, dense_vector_{std::move(dense_vector)} {
214216
assert(size() >= 0);
215217
assert(element_size() >= 0);
216-
assert(std::ranges::is_sorted(dense_vector_));
218+
assert(std::is_sorted(std::begin(dense_vector_), std::end(dense_vector_)));
217219
assert(num_groups_ >= (dense_vector_.empty() ? 0 : dense_vector_.back()));
218220
}
219221
DenseGroupedIdxVector(from_sparse_t /* tag */, IdxVector const& sparse_group_elements)

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

+4-2
Original file line numberDiff line numberDiff line change
@@ -238,7 +238,7 @@ template <column_vector DerivedA> inline auto mean_val(Eigen::ArrayBase<DerivedA
238238
inline DoubleComplex mean_val(DoubleComplex const& z) { return z; }
239239
inline double mean_val(double z) { return z; }
240240

241-
template <symmetry_tag sym, class T> inline auto process_mean_val(T const& m) {
241+
template <symmetry_tag sym, class T> inline auto process_mean_val(const T& m) {
242242
if constexpr (is_symmetric_v<sym>) {
243243
return mean_val(m);
244244
} else {
@@ -348,7 +348,9 @@ inline auto all_zero(RealValue<asymmetric_t> const& value) { return (value == Re
348348
//
349349
// The function assumes that the current value is normalized and new value should be normalized with scalar
350350
template <symmetry_tag sym, class Proxy>
351-
inline void update_real_value(RealValue<sym> const& new_value, Proxy&& current_value, double scalar) {
351+
inline void
352+
update_real_value(RealValue<sym> const& new_value, Proxy&& current_value,
353+
double scalar) { // NOLINT(cppcoreguidelines-missing-std-forward) // perfect forward into void
352354
if constexpr (is_symmetric_v<sym>) {
353355
if (!is_nan(new_value)) {
354356
std::forward<Proxy>(current_value) = scalar * new_value;

power_grid_model_c/power_grid_model/include/power_grid_model/common/timer.hpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,9 @@ class Timer {
2929
Timer(CalculationInfo& info, int code, std::string name)
3030
: info_(&info), code_(code), name_(std::move(name)), start_(Clock::now()) {}
3131

32-
Timer(Timer const&) = delete;
32+
Timer(const Timer&) = delete;
3333
Timer(Timer&&) = default;
34-
Timer& operator=(Timer const&) = delete;
34+
Timer& operator=(const Timer&) = delete;
3535

3636
Timer& operator=(Timer&& timer) noexcept {
3737
// Stop the current timer

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

+3-3
Original file line numberDiff line numberDiff line change
@@ -28,16 +28,16 @@ class Base {
2828
virtual ~Base() = default;
2929
constexpr ID id() const noexcept { return id_; }
3030
constexpr BaseOutput base_output(bool is_energized) const {
31-
return BaseOutput{.id = id_, .energized = static_cast<IntS>(is_energized)};
31+
return BaseOutput{id_, static_cast<IntS>(is_energized)};
3232
}
3333
virtual bool energized(bool is_connected_to_source) const = 0;
3434

3535
Base(Base&&) = default;
3636
Base& operator=(Base&&) = default;
3737

3838
protected:
39-
Base(Base const&) = default;
40-
Base& operator=(Base const&) = default;
39+
Base(const Base&) = default;
40+
Base& operator=(const Base&) = default;
4141

4242
private:
4343
ID id_;

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,7 @@ class Branch : public Base {
187187
assert(update_data.id == this->id() || is_nan(update_data.id));
188188
bool const changed = set_status(update_data.from_status, update_data.to_status);
189189
// change branch connection will change both topo and param
190-
return {.topo = changed, .param = changed};
190+
return {changed, changed};
191191
}
192192

193193
auto inverse(std::convertible_to<BranchUpdate> auto update_data) const {

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -209,7 +209,7 @@ class Branch3 : public Base {
209209
assert(update_data.id == this->id() || is_nan(update_data.id));
210210
bool const changed = set_status(update_data.status_1, update_data.status_2, update_data.status_3);
211211
// change in branch3 connection will change both topo and param
212-
return {.topo = changed, .param = changed};
212+
return {changed, changed};
213213
}
214214

215215
auto inverse(std::convertible_to<Branch3Update> auto update_data) const {

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ struct UpdateChange {
1818
bool param{};
1919

2020
friend constexpr UpdateChange operator||(UpdateChange const& x, UpdateChange const& y) {
21-
return UpdateChange{.topo = x.topo || y.topo, .param = x.param || y.param};
21+
return UpdateChange{x.topo || y.topo, x.param || y.param};
2222
}
2323
};
2424

power_grid_model_c/power_grid_model/include/power_grid_model/component/current_sensor.hpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ template <symmetry_tag current_sensor_symmetry_> class CurrentSensor : public Ge
105105
update_real_value<current_sensor_symmetry>(update_data.i_measured, i_measured_, base_current_inv_);
106106
update_real_value<current_sensor_symmetry>(update_data.i_angle_measured, i_angle_measured_, 1.0);
107107

108-
return {.topo = false, .param = false};
108+
return {false, false};
109109
}
110110

111111
CurrentSensorUpdate<current_sensor_symmetry>

0 commit comments

Comments
 (0)