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