From e2861d1d34306828188946ba0896b130a0844ff8 Mon Sep 17 00:00:00 2001 From: "Joachim Wuttke (h)" <j.wuttke@fz-juelich.de> Date: Thu, 30 Nov 2023 11:44:08 +0100 Subject: [PATCH] don't call virtual method from c'tor --- .clang-tidy | 12 ++++++------ Sim/Scan/AlphaScan.cpp | 15 +++++---------- Sim/Scan/AlphaScan.h | 2 -- Sim/Scan/BeamScan.h | 1 - Sim/Scan/LambdaScan.cpp | 14 ++++---------- Sim/Scan/LambdaScan.h | 1 - Sim/Scan/QzScan.cpp | 27 +++++++++++---------------- Sim/Scan/QzScan.h | 2 -- 8 files changed, 26 insertions(+), 48 deletions(-) diff --git a/.clang-tidy b/.clang-tidy index dd402e4d957..a545430782b 100644 --- a/.clang-tidy +++ b/.clang-tidy @@ -20,17 +20,14 @@ Checks: '*, -bugprone-copy-constructor-init, -bugprone-exception-escape, -bugprone-misplaced-widening-cast, --clang-analyzer-core.CallAndMessage, --clang-analyzer-optin.cplusplus.VirtualCall, --cppcoreguidelines-pro-type-const-cast, +clang-analyzer-core.CallAndMessage, -modernize-use-equals-default, --*-use-nullptr, --*-use-override, -bugprone-unused-return-value, +-clang-analyzer-optin.cplusplus.VirtualCall, -cppcoreguidelines-explicit-virtual-functions, -cppcoreguidelines-prefer-member-initializer, +-cppcoreguidelines-pro-type-const-cast, -hicpp-move-const-arg, -llvm-namespace-comment, -llvm-qualified-auto, @@ -42,6 +39,9 @@ modernize-use-equals-default, -modernize-use-auto, -modernize-use-default-member-init, -modermize-use-emplace, +-modernize-use-equals-default, +-modernize-use-nullptr, +-modernize-use-override, -modernize-use-using, -performance-for-range-copy, -performance-inefficient-vector-operation, diff --git a/Sim/Scan/AlphaScan.cpp b/Sim/Scan/AlphaScan.cpp index 2ea97985b19..f79631755b9 100644 --- a/Sim/Scan/AlphaScan.cpp +++ b/Sim/Scan/AlphaScan.cpp @@ -52,7 +52,11 @@ AlphaScan::AlphaScan(const Scale& alpha_axis) if (axis_values.back() > std::numbers::pi / 2) throw std::runtime_error("AlphaScan: angles beyond normal."); - createBeams(); + m_beams.clear(); + for (size_t i = 0; i < nScan(); i++) { + auto* beam = new Beam(defaultIntensity, defaultWavelength, m_axis->binCenter(i)); + m_beams.emplace_back(beam); + } } AlphaScan::AlphaScan(std::vector<double> points) @@ -100,12 +104,3 @@ std::vector<SpecularElement> AlphaScan::generateElements() const } return result; } - -void AlphaScan::createBeams() -{ - m_beams.clear(); - for (size_t i = 0; i < nScan(); i++) { - auto* beam = new Beam(defaultIntensity, defaultWavelength, m_axis->binCenter(i)); - m_beams.emplace_back(beam); - } -} diff --git a/Sim/Scan/AlphaScan.h b/Sim/Scan/AlphaScan.h index abdfeb6d62e..141c0961945 100644 --- a/Sim/Scan/AlphaScan.h +++ b/Sim/Scan/AlphaScan.h @@ -45,8 +45,6 @@ public: } private: - void createBeams() override; - double m_alpha_offset{0}; #endif // SWIG diff --git a/Sim/Scan/BeamScan.h b/Sim/Scan/BeamScan.h index 8810f6b1826..dcfcb93b3e2 100644 --- a/Sim/Scan/BeamScan.h +++ b/Sim/Scan/BeamScan.h @@ -108,7 +108,6 @@ protected: CloneableVector<Beam> m_beams; private: - virtual void createBeams() = 0; void setBeams(const CloneableVector<Beam>& beams); bool isCommonIntensity() const; diff --git a/Sim/Scan/LambdaScan.cpp b/Sim/Scan/LambdaScan.cpp index b8acb52ab15..52e2e76cea9 100644 --- a/Sim/Scan/LambdaScan.cpp +++ b/Sim/Scan/LambdaScan.cpp @@ -33,7 +33,10 @@ LambdaScan::LambdaScan(Scale* lambdaScale) if (axis_values.front() <= 0) throw std::runtime_error("LambdaScan: non-positive wavelengths."); - createBeams(); + for (size_t i = 0; i < nScan(); i++) { + auto* beam = new Beam(defaultIntensity, m_axis->binCenter(i), defaultInclination); + m_beams.emplace_back(beam); + } } LambdaScan::LambdaScan(const Scale& lambdaScale) @@ -75,12 +78,3 @@ std::vector<SpecularElement> LambdaScan::generateElements() const } return result; } - -void LambdaScan::createBeams() -{ - m_beams.clear(); - for (size_t i = 0; i < nScan(); i++) { - auto* beam = new Beam(defaultIntensity, m_axis->binCenter(i), defaultInclination); - m_beams.emplace_back(beam); - } -} diff --git a/Sim/Scan/LambdaScan.h b/Sim/Scan/LambdaScan.h index dec1f717bfb..2629fbe60fa 100644 --- a/Sim/Scan/LambdaScan.h +++ b/Sim/Scan/LambdaScan.h @@ -40,7 +40,6 @@ public: private: LambdaScan(Scale* lambdaScale); - void createBeams() override; #endif // SWIG }; diff --git a/Sim/Scan/QzScan.cpp b/Sim/Scan/QzScan.cpp index 9b00d82d328..865f44f14d0 100644 --- a/Sim/Scan/QzScan.cpp +++ b/Sim/Scan/QzScan.cpp @@ -33,7 +33,17 @@ QzScan::QzScan(Scale* qs_nm) if (axis_values.front() < 0) throw std::runtime_error("QzScan: negative q-values."); - createBeams(); + m_beams.clear(); + for (size_t i = 0; i < nScan(); i++) { + // Qz scan is internally understood as wavelength scan + // TODO use some shared function "qz2lambda" + double lambda = + 4.0 * std::numbers::pi * std::sin(defaultInclination) / m_axis->binCenter(i); + auto* beam = new Beam(defaultIntensity, lambda, defaultInclination); + // Since the grazing geometry is not clear in q-space, the footprint should not be used + beam->setFootprint(nullptr); + m_beams.emplace_back(beam); + } } QzScan::QzScan(const Scale& qs_nm) @@ -132,18 +142,3 @@ void QzScan::setVectorResolution(const IDistribution1D& distr, const std::vector ASSERT(std_devs.size() > 1); m_resol_width = std_devs; } - -void QzScan::createBeams() -{ - m_beams.clear(); - for (size_t i = 0; i < nScan(); i++) { - // Qz scan is internally understood as wavelength scan - // TODO use some shared function "qz2lambda" - double lambda = - 4.0 * std::numbers::pi * std::sin(defaultInclination) / m_axis->binCenter(i); - auto* beam = new Beam(defaultIntensity, lambda, defaultInclination); - // Since the grazing geometry is not clear in q-space, the footprint should not be used - beam->setFootprint(nullptr); - m_beams.emplace_back(beam); - } -} diff --git a/Sim/Scan/QzScan.h b/Sim/Scan/QzScan.h index 8639c99e763..a8e789c3b61 100644 --- a/Sim/Scan/QzScan.h +++ b/Sim/Scan/QzScan.h @@ -71,8 +71,6 @@ public: private: QzScan(Scale* qs_nm); - void createBeams() override; - std::unique_ptr<const IDistribution1D> m_qz_distrib; std::vector<double> m_resol_width; bool m_relative_resolution{false}; -- GitLab