From e3ab115635e1b69a477f694cf3279d4bdd4246d2 Mon Sep 17 00:00:00 2001 From: "Joachim Wuttke (h)" <j.wuttke@fz-juelich.de> Date: Sat, 14 Nov 2020 11:29:16 +0100 Subject: [PATCH] Lattice: raw -> unique ptr --- Sample/Lattice/Lattice.cpp | 20 ++++++-------------- Sample/Lattice/Lattice.h | 6 +++--- 2 files changed, 9 insertions(+), 17 deletions(-) diff --git a/Sample/Lattice/Lattice.cpp b/Sample/Lattice/Lattice.cpp index 4085190a1ca..d10d0731653 100644 --- a/Sample/Lattice/Lattice.cpp +++ b/Sample/Lattice/Lattice.cpp @@ -20,8 +20,7 @@ #include <gsl/gsl_linalg.h> Lattice::Lattice() - : m_selection_rule(nullptr) - , m_a({1.0, 0.0, 0.0}) + : m_a({1.0, 0.0, 0.0}) , m_b({0.0, 1.0, 0.0}) , m_c({0.0, 0.0, 1.0}) , m_cache_ok(false) @@ -32,7 +31,7 @@ Lattice::Lattice() } Lattice::Lattice(const kvector_t a1, const kvector_t a2, const kvector_t a3) - : m_selection_rule(nullptr), m_a(a1), m_b(a2), m_c(a3), m_cache_ok(false) + : m_a(a1), m_b(a2), m_c(a3), m_cache_ok(false) { setName("Lattice"); initialize(); @@ -41,7 +40,6 @@ Lattice::Lattice(const kvector_t a1, const kvector_t a2, const kvector_t a3) Lattice::Lattice(const Lattice& lattice) : INode() - , m_selection_rule(nullptr) , m_a(lattice.m_a) , m_b(lattice.m_b) , m_c(lattice.m_c) @@ -54,10 +52,7 @@ Lattice::Lattice(const Lattice& lattice) registerBasisVectors(); } -Lattice::~Lattice() -{ - delete m_selection_rule; -} +Lattice::~Lattice() = default; Lattice Lattice::transformed(const Transform3D& transform) const { @@ -99,13 +94,11 @@ double Lattice::volume() const void Lattice::getReciprocalLatticeBasis(kvector_t& b1, kvector_t& b2, kvector_t& b3) const { - if (!m_cache_ok) { + if (!m_cache_ok) initialize(); - } b1 = m_ra; b2 = m_rb; b3 = m_rc; - return; } ivector_t Lattice::getNearestLatticeVectorCoordinates(const kvector_t vector_in) const @@ -192,8 +185,7 @@ std::vector<kvector_t> Lattice::vectorsWithinRadius(const kvector_t input_vector return ret; } -void Lattice::setSelectionRule(const ISelectionRule& p_selection_rule) +void Lattice::setSelectionRule(const ISelectionRule& selection_rule) { - delete m_selection_rule; - m_selection_rule = p_selection_rule.clone(); + m_selection_rule.reset(selection_rule.clone()); } diff --git a/Sample/Lattice/Lattice.h b/Sample/Lattice/Lattice.h index a4e0cce02e2..b4cad87c44e 100644 --- a/Sample/Lattice/Lattice.h +++ b/Sample/Lattice/Lattice.h @@ -16,6 +16,7 @@ #define BORNAGAIN_SAMPLE_LATTICE_LATTICE_H #include "Param/Node/INode.h" +#include <memory> #include <vector> class ISelectionRule; @@ -31,6 +32,7 @@ public: Lattice(const kvector_t a1, const kvector_t a2, const kvector_t a3); Lattice(const Lattice& lattice); ~Lattice() override; + Lattice& operator=(const Lattice&) = delete; void accept(INodeVisitor* visitor) const override { visitor->visit(this); } @@ -77,8 +79,6 @@ public: void onChange() override; private: - Lattice& operator=(const Lattice& lattice); - void registerBasisVectors(); std::vector<kvector_t> vectorsWithinRadius(const kvector_t input_vector, @@ -89,7 +89,7 @@ private: void computeReciprocalVectors() const; - ISelectionRule* m_selection_rule; + std::unique_ptr<ISelectionRule> m_selection_rule; kvector_t m_a, m_b, m_c; //!< Basis vectors in real space mutable kvector_t m_ra, m_rb, m_rc; //!< Cache of basis vectors in reciprocal space //! Boolean indicating if the reciprocal vectors are already initialized in the cache -- GitLab