Skip to content

Commit 9086696

Browse files
committed
clang-tidy
Signed-off-by: Martijn Govers <[email protected]>
1 parent 7496e27 commit 9086696

File tree

4 files changed

+31
-29
lines changed

4 files changed

+31
-29
lines changed

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

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,18 @@ class MultiThreadedLoggerImpl : public MultiThreadedLogger {
2121
class ThreadLogger : public SubThreadLogger {
2222
public:
2323
ThreadLogger(MultiThreadedLoggerImpl& parent) : parent_{&parent} {}
24+
ThreadLogger(ThreadLogger const&) = default;
25+
ThreadLogger& operator=(ThreadLogger const&) = default;
26+
ThreadLogger(ThreadLogger&&) noexcept = default;
27+
ThreadLogger& operator=(ThreadLogger&&) noexcept = default;
2428
~ThreadLogger() override { sync(); }
2529
void sync() const { parent_->sync(*this); }
2630

2731
private:
2832
MultiThreadedLoggerImpl* parent_;
2933
};
3034

31-
virtual std::unique_ptr<Logger> create_child() override { return std::make_unique<ThreadLogger>(*this); }
35+
std::unique_ptr<Logger> create_child() override { return std::make_unique<ThreadLogger>(*this); }
3236
LoggerType& get() { return log_; }
3337
LoggerType const& get() const { return log_; }
3438

@@ -44,7 +48,7 @@ class MultiThreadedLoggerImpl : public MultiThreadedLogger {
4448
std::mutex mutex_;
4549

4650
void sync(ThreadLogger const& logger) {
47-
std::lock_guard lock{mutex_};
51+
std::lock_guard const lock{mutex_};
4852
merge_into(log_, static_cast<SubThreadLogger const&>(logger));
4953
}
5054
};

power_grid_model_c/power_grid_model/include/power_grid_model/job_dispatch.hpp

Lines changed: 21 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ class JobDispatch {
4949
std::vector<std::string> exceptions(n_scenarios, "");
5050

5151
adapter.prepare_job_dispatch(update_data);
52-
auto single_job = single_thread_job(adapter, result_data, update_data, exceptions, log);
52+
auto single_job = JobDispatch::single_thread_job(adapter, result_data, update_data, exceptions, log);
5353

5454
job_dispatch(single_job, n_scenarios, threading);
5555

@@ -74,6 +74,23 @@ class JobDispatch {
7474
return batch_calculation(adapter, result_data, update_data, sequential);
7575
}
7676

77+
// Lippincott pattern
78+
static auto scenario_exception_handler(std::vector<std::string>& messages) {
79+
return [&messages](Idx scenario_idx) -> void {
80+
assert(0 <= scenario_idx);
81+
assert(scenario_idx < messages.size());
82+
83+
std::exception_ptr const ex_ptr = std::current_exception();
84+
try {
85+
std::rethrow_exception(ex_ptr);
86+
} catch (std::exception const& ex) {
87+
messages[scenario_idx] = ex.what();
88+
} catch (...) {
89+
messages[scenario_idx] = "unknown exception";
90+
}
91+
};
92+
}
93+
7794
template <typename Adapter, typename ResultDataset, typename UpdateDataset>
7895
static auto single_thread_job(Adapter& base_adapter, ResultDataset const& result_data,
7996
UpdateDataset const& update_data, std::vector<std::string>& exceptions,
@@ -113,9 +130,9 @@ class JobDispatch {
113130

114131
auto run = [&adapter, &result_data](Idx scenario_idx) { adapter.calculate(result_data, scenario_idx); };
115132

116-
auto calculate_scenario =
117-
JobDispatch::call_with<Idx>(std::move(run), std::move(setup), std::move(winddown),
118-
scenario_exception_handler(exceptions), std::move(recover_from_bad));
133+
auto calculate_scenario = JobDispatch::call_with<Idx>(std::move(run), std::move(setup), std::move(winddown),
134+
JobDispatch::scenario_exception_handler(exceptions),
135+
std::move(recover_from_bad));
119136

120137
for (Idx scenario_idx = start; scenario_idx < n_scenarios; scenario_idx += stride) {
121138
Timer const t_total_single{thread_info, LogEvent::total_single_calculation_in_thread};
@@ -187,20 +204,6 @@ class JobDispatch {
187204
};
188205
}
189206

190-
// Lippincott pattern
191-
static auto scenario_exception_handler(std::vector<std::string>& messages) {
192-
return [&messages](Idx scenario_idx) {
193-
std::exception_ptr const ex_ptr = std::current_exception();
194-
try {
195-
std::rethrow_exception(ex_ptr);
196-
} catch (std::exception const& ex) {
197-
messages[scenario_idx] = ex.what();
198-
} catch (...) {
199-
messages[scenario_idx] = "unknown exception";
200-
}
201-
};
202-
}
203-
204207
static void handle_batch_exceptions(std::vector<std::string> const& exceptions) {
205208
std::string combined_error_message;
206209
IdxVector failed_scenarios;

power_grid_model_c/power_grid_model/include/power_grid_model/job_interface.hpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,8 +75,8 @@ template <typename Adapter> class JobInterface {
7575
static_cast<Adapter*>(this)->set_logger_impl(log);
7676
}
7777

78-
protected:
79-
// Protected & defaulted special members — CRTP: only the derived can create/copy/move this base
78+
private:
79+
friend Adapter; // CRTP compliance
8080
JobInterface() = default;
8181
JobInterface(const JobInterface& /*other*/) = default;
8282
JobInterface& operator=(const JobInterface& /*other*/) = default;

tests/cpp_unit_tests/test_job_dispatch.cpp

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -52,20 +52,15 @@ class JobAdapterMock : public JobInterface<JobAdapterMock> {
5252
JobAdapterMock(std::shared_ptr<CallCounter> counter) : counter_{std::move(counter)} {
5353
REQUIRE_MESSAGE(counter_ != nullptr, "Counter must not be null or all getters will fail later on");
5454
}
55-
JobAdapterMock(JobAdapterMock const& other) : counter_{other.counter_}, logger_{nullptr} {}
55+
JobAdapterMock(JobAdapterMock const& other) : counter_{other.counter_} {}
5656
JobAdapterMock& operator=(JobAdapterMock const& other) {
5757
if (this != &other) {
5858
counter_ = other.counter_;
5959
logger_ = nullptr; // reset logger
6060
}
6161
return *this;
6262
};
63-
JobAdapterMock(JobAdapterMock&& other) noexcept {
64-
counter_ = std::move(other.counter_);
65-
other.counter_ = nullptr;
66-
logger_ = other.logger_;
67-
other.logger_ = nullptr;
68-
};
63+
JobAdapterMock(JobAdapterMock&& other) noexcept : counter_{std::move(other.counter_)}, logger_{other.logger_} {}
6964
JobAdapterMock& operator=(JobAdapterMock&& other) noexcept {
7065
if (this != &other) {
7166
counter_ = std::move(other.counter_);

0 commit comments

Comments
 (0)