From f8780acba16e422928a3a2602d77fc667b092d35 Mon Sep 17 00:00:00 2001
From: "Joachim Wuttke (h)" <j.wuttke@fz-juelich.de>
Date: Fri, 12 Nov 2021 18:07:19 +0100
Subject: [PATCH] Base some more rules

---
 .clang-tidy                            | 15 ++++++++-------
 Base/Axis/Bin.h                        |  6 +++---
 Base/Axis/ConstKBinAxis.h              |  4 ++--
 Base/Axis/CustomBinAxis.h              |  4 ++--
 Base/Axis/FixedBinAxis.h               |  4 ++--
 Base/Axis/IAxis.h                      |  2 +-
 Base/Axis/PointwiseAxis.cpp            |  2 +-
 Base/Axis/PointwiseAxis.h              |  2 +-
 Base/Axis/VariableBinAxis.cpp          |  2 +-
 Base/Axis/VariableBinAxis.h            |  8 ++++----
 Base/Pixel/IPixel.h                    |  2 +-
 Base/Progress/DelayedProgressCounter.h |  2 +-
 Base/Types/CloneableVector.h           |  2 +-
 Base/Types/SafePointerVector.h         |  2 +-
 Base/Util/ThreadInfo.h                 |  2 +-
 Base/Vector/Transform3D.h              |  2 +-
 auto/Wrap/doxygenBase.i                | 26 +++++++++++++-------------
 auto/Wrap/libBornAgainBase_wrap.cpp    | 12 ++++++------
 18 files changed, 50 insertions(+), 49 deletions(-)

diff --git a/.clang-tidy b/.clang-tidy
index 62ac712d0f0..1aaa43a2636 100644
--- a/.clang-tidy
+++ b/.clang-tidy
@@ -99,17 +99,17 @@ Checks: '
 
 -SectionComment_Temporarily_disabled_checks__To_be_resolved_soon,
 
--*-use-auto,
--*-move-const-arg,
--*-use-equals-default,
--*-use-nullptr,
--*-use-override,
+*-use-auto,
+*-move-const-arg,
+*-use-equals-default,
+*-use-nullptr,
+*-use-override,
 -bugprone-parent-virtual-call,
 -clang-analyzer-core.CallAndMessage,
 -clang-analyzer-optin.cplusplus.VirtualCall,
 -cppcoreguidelines-explicit-virtual-functions,
--cppcoreguidelines-pro-type-const-cast,
--cppcoreguidelines-pro-type-static-cast-downcast,
+cppcoreguidelines-pro-type-const-cast,
+cppcoreguidelines-pro-type-static-cast-downcast,
 google-explicit-constructor,
 google-readability-avoid-underscore-in-googletest-name,
 google-runtime-references,
@@ -136,6 +136,7 @@ readability-qualified-auto,
 readability-redundant-member-init,
 readability-simplify-boolean-expr,
 
+
 -SectionComment_Temporarily_disabled_checks__We_need_to_investigate_them_one_by_one,
 
 -bugprone-exception-escape,
diff --git a/Base/Axis/Bin.h b/Base/Axis/Bin.h
index 654c35454eb..43a26fa2c1a 100644
--- a/Base/Axis/Bin.h
+++ b/Base/Axis/Bin.h
@@ -18,7 +18,7 @@
 #include "Base/Vector/Vectors3D.h"
 
 struct Bin1D {
-    Bin1D()  {}
+    Bin1D()  = default;
     Bin1D(double lower, double upper) : m_lower(lower), m_upper(upper) {}
     double m_lower{0}; //!< lower bound of the bin
     double m_upper{0}; //!< upper bound of the bin
@@ -33,7 +33,7 @@ bool BinContains(const Bin1D& bin, double value);
 //! An one-dimensional range of R3's.
 
 struct Bin1DKVector {
-    Bin1DKVector()  {}
+    Bin1DKVector()  = default;
     Bin1DKVector(const R3 lower, const R3 upper) : m_q_lower(lower), m_q_upper(upper) {}
     Bin1DKVector(double wavelength, const Bin1D& alpha_bin, const Bin1D& phi_bin);
 
@@ -47,7 +47,7 @@ struct Bin1DKVector {
 
 class Bin1DCVector {
 public:
-    Bin1DCVector()  {}
+    Bin1DCVector()  = default;
     Bin1DCVector(C3 lower, C3 upper) : m_q_lower(lower), m_q_upper(upper) {}
     Bin1DCVector(double wavelength, const Bin1D& alpha_bin, const Bin1D& phi_bin);
     C3 center() const { return (m_q_lower + m_q_upper) / 2.0; }
diff --git a/Base/Axis/ConstKBinAxis.h b/Base/Axis/ConstKBinAxis.h
index eba5a8c05ac..bdeca20c73f 100644
--- a/Base/Axis/ConstKBinAxis.h
+++ b/Base/Axis/ConstKBinAxis.h
@@ -28,11 +28,11 @@ public:
     //! @param start low edge of first bin
     //! @param end upper edge of last bin
     ConstKBinAxis(const std::string& name, size_t nbins, double start, double end);
-    ~ConstKBinAxis() override {}
+    ~ConstKBinAxis() override = default;
 
     ConstKBinAxis* clone() const override;
 
-    virtual void clip(double lower, double upper) override;
+    void clip(double lower, double upper) override;
 
 protected:
     ConstKBinAxis(const std::string& name, size_t nbins);
diff --git a/Base/Axis/CustomBinAxis.h b/Base/Axis/CustomBinAxis.h
index ce300376ee7..f1d65eb764b 100644
--- a/Base/Axis/CustomBinAxis.h
+++ b/Base/Axis/CustomBinAxis.h
@@ -29,7 +29,7 @@ public:
     //! @param start center of first bin (IsGisaxs convention)
     //! @param end center of last bin (IsGisaxs convention)
     CustomBinAxis(const std::string& name, size_t nbins, double start, double end);
-    virtual ~CustomBinAxis() {}
+    ~CustomBinAxis() override = default;
 
     CustomBinAxis* clone() const override;
 
@@ -37,7 +37,7 @@ public:
 
     std::vector<double> binCenters() const override;
 
-    virtual void clip(double lower, double upper) override;
+    void clip(double lower, double upper) override;
 
 protected:
     void print(std::ostream& ostr) const override;
diff --git a/Base/Axis/FixedBinAxis.h b/Base/Axis/FixedBinAxis.h
index 4b246329495..c2e10049070 100644
--- a/Base/Axis/FixedBinAxis.h
+++ b/Base/Axis/FixedBinAxis.h
@@ -28,7 +28,7 @@ public:
     //! @param start low edge of first bin
     //! @param end upper edge of last bin
     FixedBinAxis(const std::string& name, size_t nbins, double start, double end);
-    virtual ~FixedBinAxis() {}
+    ~FixedBinAxis() override = default;
 
     FixedBinAxis* clone() const override;
 
@@ -53,7 +53,7 @@ public:
 
 protected:
     void print(std::ostream& ostr) const override;
-    virtual bool equals(const IAxis& other) const override;
+    bool equals(const IAxis& other) const override;
 
 private:
     size_t m_nbins;
diff --git a/Base/Axis/IAxis.h b/Base/Axis/IAxis.h
index 4aa0982e2c0..b6b5706f86b 100644
--- a/Base/Axis/IAxis.h
+++ b/Base/Axis/IAxis.h
@@ -26,7 +26,7 @@ class IAxis {
 public:
     explicit IAxis(std::string  name) : m_name(std::move(name)) {}
     IAxis(const IAxis&) = delete;
-    virtual ~IAxis() {}
+    virtual ~IAxis() = default;
 
     virtual IAxis* clone() const = 0;
 
diff --git a/Base/Axis/PointwiseAxis.cpp b/Base/Axis/PointwiseAxis.cpp
index 6e5d5b828f9..043202bdc00 100644
--- a/Base/Axis/PointwiseAxis.cpp
+++ b/Base/Axis/PointwiseAxis.cpp
@@ -55,7 +55,7 @@ size_t PointwiseAxis::findClosestIndex(double value) const
 
     const auto begin = m_coordinates.begin();
     auto result = std::lower_bound(begin, m_coordinates.end(), value);
-    size_t index = static_cast<size_t>(std::distance(begin, result));
+    auto index = static_cast<size_t>(std::distance(begin, result));
     return value < lowerBoundary(index) ? index - 1 : index;
 }
 
diff --git a/Base/Axis/PointwiseAxis.h b/Base/Axis/PointwiseAxis.h
index bf48dbe97ae..f365ad5c1b0 100644
--- a/Base/Axis/PointwiseAxis.h
+++ b/Base/Axis/PointwiseAxis.h
@@ -75,7 +75,7 @@ public:
 
     std::vector<double> binBoundaries() const override;
 
-    virtual void clip(double lower, double upper) override;
+    void clip(double lower, double upper) override;
 
 private:
     void print(std::ostream& ostr) const override;
diff --git a/Base/Axis/VariableBinAxis.cpp b/Base/Axis/VariableBinAxis.cpp
index 9b913d4200d..fe8f31129b4 100644
--- a/Base/Axis/VariableBinAxis.cpp
+++ b/Base/Axis/VariableBinAxis.cpp
@@ -78,7 +78,7 @@ size_t VariableBinAxis::findClosestIndex(double value) const
     if (value >= upperBound())
         return m_nbins - 1;
 
-    std::vector<double>::const_iterator top_limit =
+    auto top_limit =
         std::lower_bound(m_bin_boundaries.begin(), m_bin_boundaries.end(), value);
     if (*top_limit != value)
         --top_limit;
diff --git a/Base/Axis/VariableBinAxis.h b/Base/Axis/VariableBinAxis.h
index 7b018038b46..e3190f37464 100644
--- a/Base/Axis/VariableBinAxis.h
+++ b/Base/Axis/VariableBinAxis.h
@@ -29,7 +29,7 @@ public:
     //! bin and upper edge of last bin.
     VariableBinAxis(const std::string& name, size_t nbins,
                     const std::vector<double>& bin_boundaries);
-    virtual ~VariableBinAxis() {}
+    ~VariableBinAxis() override = default;
 
     VariableBinAxis* clone() const override;
 
@@ -49,14 +49,14 @@ public:
     std::vector<double> binCenters() const override;
     std::vector<double> binBoundaries() const override { return m_bin_boundaries; }
 
-    virtual void clip(double lower, double upper) override;
+    void clip(double lower, double upper) override;
 
 protected:
     explicit VariableBinAxis(const std::string& name, size_t nbins = 0);
     void setBinBoundaries(const std::vector<double>& bin_boundaries);
 
-    virtual void print(std::ostream& ostr) const override;
-    virtual bool equals(const IAxis& other) const override;
+    void print(std::ostream& ostr) const override;
+    bool equals(const IAxis& other) const override;
     size_t m_nbins;
 
 private:
diff --git a/Base/Pixel/IPixel.h b/Base/Pixel/IPixel.h
index b85e529f965..f9d3ffe8d74 100644
--- a/Base/Pixel/IPixel.h
+++ b/Base/Pixel/IPixel.h
@@ -28,7 +28,7 @@
 
 class IPixel {
 public:
-    virtual ~IPixel() {}
+    virtual ~IPixel() = default;
 
     virtual IPixel* clone() const = 0;
     virtual IPixel* createZeroSizePixel(double x, double y) const = 0;
diff --git a/Base/Progress/DelayedProgressCounter.h b/Base/Progress/DelayedProgressCounter.h
index 3e31d716766..18b9a19103c 100644
--- a/Base/Progress/DelayedProgressCounter.h
+++ b/Base/Progress/DelayedProgressCounter.h
@@ -29,7 +29,7 @@ class ProgressHandler;
 class DelayedProgressCounter {
 public:
     DelayedProgressCounter(ProgressHandler* p_progress, size_t interval);
-    ~DelayedProgressCounter() {}
+    ~DelayedProgressCounter() = default;
 
     //! Increments inner counter; at regular intervals updates progress handler.
     void stepProgress();
diff --git a/Base/Types/CloneableVector.h b/Base/Types/CloneableVector.h
index 18cb76502de..fc521bb1180 100644
--- a/Base/Types/CloneableVector.h
+++ b/Base/Types/CloneableVector.h
@@ -34,7 +34,7 @@ template <class T> class CloneableVector : public std::vector<std::unique_ptr<T>
     using super = std::vector<std::unique_ptr<T>>;
 
 public:
-    CloneableVector() {}
+    CloneableVector() = default;
     CloneableVector(const CloneableVector& other) : super() { copyOther(other); }
     CloneableVector& operator=(const CloneableVector& other)
     {
diff --git a/Base/Types/SafePointerVector.h b/Base/Types/SafePointerVector.h
index 728a880ce60..56651b3022d 100644
--- a/Base/Types/SafePointerVector.h
+++ b/Base/Types/SafePointerVector.h
@@ -31,7 +31,7 @@ template <class T> class SafePointerVector {
 public:
     using iterator = typename std::vector<T *>::iterator;
     using const_iterator = typename std::vector<T *>::const_iterator;
-    SafePointerVector() {}
+    SafePointerVector() = default;
     SafePointerVector(const SafePointerVector& other);
     SafePointerVector(SafePointerVector&& other) noexcept ;
     ~SafePointerVector() { clear(); }
diff --git a/Base/Util/ThreadInfo.h b/Base/Util/ThreadInfo.h
index a8b8cc22869..4165e0b960b 100644
--- a/Base/Util/ThreadInfo.h
+++ b/Base/Util/ThreadInfo.h
@@ -25,6 +25,6 @@ struct ThreadInfo {
     unsigned current_batch{0};
 };
 
-inline ThreadInfo::ThreadInfo()  {}
+inline ThreadInfo::ThreadInfo()  = default;
 
 #endif // BORNAGAIN_BASE_UTIL_THREADINFO_H
diff --git a/Base/Vector/Transform3D.h b/Base/Vector/Transform3D.h
index 234f4c4f15a..425ee3ffc4d 100644
--- a/Base/Vector/Transform3D.h
+++ b/Base/Vector/Transform3D.h
@@ -35,7 +35,7 @@ public:
 #endif
 
     //! Destructor
-    ~Transform3D() {}
+    ~Transform3D() = default;
 
     //! Clones the transformation
     Transform3D* clone() const;
diff --git a/auto/Wrap/doxygenBase.i b/auto/Wrap/doxygenBase.i
index 8eb952e28b2..4d834a25d2b 100644
--- a/auto/Wrap/doxygenBase.i
+++ b/auto/Wrap/doxygenBase.i
@@ -157,7 +157,7 @@ Returns result of rotation around the axis specified by another vector.
 // File: structBin1D.xml
 %feature("docstring") Bin1D "";
 
-%feature("docstring")  Bin1D::Bin1D "Bin1D::Bin1D()
+%feature("docstring")  Bin1D::Bin1D "Bin1D::Bin1D()=default
 ";
 
 %feature("docstring")  Bin1D::Bin1D "Bin1D::Bin1D(double lower, double upper)
@@ -178,7 +178,7 @@ An one-dimensional range of C3's.
 C++ includes: Bin.h
 ";
 
-%feature("docstring")  Bin1DCVector::Bin1DCVector "Bin1DCVector::Bin1DCVector()
+%feature("docstring")  Bin1DCVector::Bin1DCVector "Bin1DCVector::Bin1DCVector()=default
 ";
 
 %feature("docstring")  Bin1DCVector::Bin1DCVector "Bin1DCVector::Bin1DCVector(C3 lower, C3 upper)
@@ -204,7 +204,7 @@ An one-dimensional range of R3's.
 C++ includes: Bin.h
 ";
 
-%feature("docstring")  Bin1DKVector::Bin1DKVector "Bin1DKVector::Bin1DKVector()
+%feature("docstring")  Bin1DKVector::Bin1DKVector "Bin1DKVector::Bin1DKVector()=default
 ";
 
 %feature("docstring")  Bin1DKVector::Bin1DKVector "Bin1DKVector::Bin1DKVector(const R3 lower, const R3 upper)
@@ -243,7 +243,7 @@ Equips vector<unique_ptr<T>> with copy constructor. For use with polymorphic obj
 C++ includes: CloneableVector.h
 ";
 
-%feature("docstring")  CloneableVector::CloneableVector "CloneableVector< T >::CloneableVector()
+%feature("docstring")  CloneableVector::CloneableVector "CloneableVector< T >::CloneableVector()=default
 ";
 
 %feature("docstring")  CloneableVector::CloneableVector "CloneableVector< T >::CloneableVector(const CloneableVector &other)
@@ -296,7 +296,7 @@ end:
 upper edge of last bin 
 ";
 
-%feature("docstring")  ConstKBinAxis::~ConstKBinAxis "ConstKBinAxis::~ConstKBinAxis() override
+%feature("docstring")  ConstKBinAxis::~ConstKBinAxis "ConstKBinAxis::~ConstKBinAxis() override=default
 ";
 
 %feature("docstring")  ConstKBinAxis::clone "ConstKBinAxis * ConstKBinAxis::clone() const override
@@ -336,7 +336,7 @@ end:
 center of last bin (IsGisaxs convention) 
 ";
 
-%feature("docstring")  CustomBinAxis::~CustomBinAxis "virtual CustomBinAxis::~CustomBinAxis()
+%feature("docstring")  CustomBinAxis::~CustomBinAxis "CustomBinAxis::~CustomBinAxis() override=default
 ";
 
 %feature("docstring")  CustomBinAxis::clone "CustomBinAxis * CustomBinAxis::clone() const override
@@ -367,7 +367,7 @@ C++ includes: DelayedProgressCounter.h
 %feature("docstring")  DelayedProgressCounter::DelayedProgressCounter "DelayedProgressCounter::DelayedProgressCounter(ProgressHandler *p_progress, size_t interval)
 ";
 
-%feature("docstring")  DelayedProgressCounter::~DelayedProgressCounter "DelayedProgressCounter::~DelayedProgressCounter()
+%feature("docstring")  DelayedProgressCounter::~DelayedProgressCounter "DelayedProgressCounter::~DelayedProgressCounter()=default
 ";
 
 %feature("docstring")  DelayedProgressCounter::stepProgress "void DelayedProgressCounter::stepProgress()
@@ -481,7 +481,7 @@ end:
 upper edge of last bin 
 ";
 
-%feature("docstring")  FixedBinAxis::~FixedBinAxis "virtual FixedBinAxis::~FixedBinAxis()
+%feature("docstring")  FixedBinAxis::~FixedBinAxis "FixedBinAxis::~FixedBinAxis() override=default
 ";
 
 %feature("docstring")  FixedBinAxis::clone "FixedBinAxis * FixedBinAxis::clone() const override
@@ -582,7 +582,7 @@ C++ includes: IAxis.h
 %feature("docstring")  IAxis::IAxis "IAxis::IAxis(const IAxis &)=delete
 ";
 
-%feature("docstring")  IAxis::~IAxis "virtual IAxis::~IAxis()
+%feature("docstring")  IAxis::~IAxis "virtual IAxis::~IAxis()=default
 ";
 
 %feature("docstring")  IAxis::clone "virtual IAxis* IAxis::clone() const =0
@@ -766,7 +766,7 @@ Interface for a function that maps [0,1]x[0,1] to the kvectors in a pixel. Abstr
 C++ includes: IPixel.h
 ";
 
-%feature("docstring")  IPixel::~IPixel "virtual IPixel::~IPixel()
+%feature("docstring")  IPixel::~IPixel "virtual IPixel::~IPixel()=default
 ";
 
 %feature("docstring")  IPixel::clone "virtual IPixel* IPixel::clone() const =0
@@ -982,7 +982,7 @@ The objects pointed to must support the  ICloneable interface.
 C++ includes: SafePointerVector.h
 ";
 
-%feature("docstring")  SafePointerVector::SafePointerVector "SafePointerVector< T >::SafePointerVector()
+%feature("docstring")  SafePointerVector::SafePointerVector "SafePointerVector< T >::SafePointerVector()=default
 ";
 
 %feature("docstring")  SafePointerVector::SafePointerVector "SafePointerVector< T >::SafePointerVector(const SafePointerVector &other)
@@ -1082,7 +1082,7 @@ Constructs unit transformation.
 Constructor from matrix (no checks if this is an element of SO(3)!) 
 ";
 
-%feature("docstring")  Transform3D::~Transform3D "Transform3D::~Transform3D()
+%feature("docstring")  Transform3D::~Transform3D "Transform3D::~Transform3D()=default
 
 Destructor. 
 ";
@@ -1175,7 +1175,7 @@ bin_boundaries:
 Array of size nbins+1 containing low-edges for each bin and upper edge of last bin. 
 ";
 
-%feature("docstring")  VariableBinAxis::~VariableBinAxis "virtual VariableBinAxis::~VariableBinAxis()
+%feature("docstring")  VariableBinAxis::~VariableBinAxis "VariableBinAxis::~VariableBinAxis() override=default
 ";
 
 %feature("docstring")  VariableBinAxis::clone "VariableBinAxis * VariableBinAxis::clone() const override
diff --git a/auto/Wrap/libBornAgainBase_wrap.cpp b/auto/Wrap/libBornAgainBase_wrap.cpp
index 92c842f5e5b..2d7520ec6a9 100644
--- a/auto/Wrap/libBornAgainBase_wrap.cpp
+++ b/auto/Wrap/libBornAgainBase_wrap.cpp
@@ -33370,7 +33370,7 @@ static PyMethodDef SwigMethods[] = {
 		""},
 	 { "delete_Transform3D", _wrap_delete_Transform3D, METH_O, "\n"
 		"delete_Transform3D(Transform3D self)\n"
-		"Transform3D::~Transform3D()\n"
+		"Transform3D::~Transform3D()=default\n"
 		"\n"
 		"Destructor. \n"
 		"\n"
@@ -33543,7 +33543,7 @@ static PyMethodDef SwigMethods[] = {
 	 { "Bin1DCVector_swiginit", Bin1DCVector_swiginit, METH_VARARGS, NULL},
 	 { "delete_IAxis", _wrap_delete_IAxis, METH_O, "\n"
 		"delete_IAxis(IAxis self)\n"
-		"virtual IAxis::~IAxis()\n"
+		"virtual IAxis::~IAxis()=default\n"
 		"\n"
 		""},
 	 { "IAxis_clone", _wrap_IAxis_clone, METH_O, "\n"
@@ -33675,7 +33675,7 @@ static PyMethodDef SwigMethods[] = {
 		""},
 	 { "delete_VariableBinAxis", _wrap_delete_VariableBinAxis, METH_O, "\n"
 		"delete_VariableBinAxis(VariableBinAxis self)\n"
-		"virtual VariableBinAxis::~VariableBinAxis()\n"
+		"VariableBinAxis::~VariableBinAxis() override=default\n"
 		"\n"
 		""},
 	 { "VariableBinAxis_clone", _wrap_VariableBinAxis_clone, METH_O, "\n"
@@ -33767,7 +33767,7 @@ static PyMethodDef SwigMethods[] = {
 		""},
 	 { "delete_ConstKBinAxis", _wrap_delete_ConstKBinAxis, METH_O, "\n"
 		"delete_ConstKBinAxis(ConstKBinAxis self)\n"
-		"ConstKBinAxis::~ConstKBinAxis() override\n"
+		"ConstKBinAxis::~ConstKBinAxis() override=default\n"
 		"\n"
 		""},
 	 { "ConstKBinAxis_clone", _wrap_ConstKBinAxis_clone, METH_O, "\n"
@@ -33808,7 +33808,7 @@ static PyMethodDef SwigMethods[] = {
 		""},
 	 { "delete_CustomBinAxis", _wrap_delete_CustomBinAxis, METH_O, "\n"
 		"delete_CustomBinAxis(CustomBinAxis self)\n"
-		"virtual CustomBinAxis::~CustomBinAxis()\n"
+		"CustomBinAxis::~CustomBinAxis() override=default\n"
 		"\n"
 		""},
 	 { "CustomBinAxis_clone", _wrap_CustomBinAxis_clone, METH_O, "\n"
@@ -33861,7 +33861,7 @@ static PyMethodDef SwigMethods[] = {
 		""},
 	 { "delete_FixedBinAxis", _wrap_delete_FixedBinAxis, METH_O, "\n"
 		"delete_FixedBinAxis(FixedBinAxis self)\n"
-		"virtual FixedBinAxis::~FixedBinAxis()\n"
+		"FixedBinAxis::~FixedBinAxis() override=default\n"
 		"\n"
 		""},
 	 { "FixedBinAxis_clone", _wrap_FixedBinAxis_clone, METH_O, "\n"
-- 
GitLab