From 43bb5a4f7fbf62d05a75d33bbaf2eea31dfdfc9e Mon Sep 17 00:00:00 2001
From: "Joachim Wuttke (h)" <j.wuttke@fz-juelich.de>
Date: Fri, 12 Nov 2021 08:01:06 +0100
Subject: [PATCH] ...

---
 .clang-tidy                                   |  5 +-
 App/AppOptions.cpp                            |  4 +-
 GUI/View/Realspace/IPositionBuilder.cpp       | 14 ++-
 .../Realspace/RealSpace2DParacrystalUtils.cpp | 88 ++++++++-----------
 .../SampleDesigner/SampleEditorCommands.cpp   |  7 +-
 .../SampleDesigner/SampleToolBoxGroupView.cpp |  3 +-
 GUI/View/Tool/DesignerHelper.cpp              |  3 +-
 7 files changed, 56 insertions(+), 68 deletions(-)

diff --git a/.clang-tidy b/.clang-tidy
index e54bc67fc1f..21b1a8391a1 100644
--- a/.clang-tidy
+++ b/.clang-tidy
@@ -29,7 +29,7 @@ Checks: '*,
 -bugprone-suspicious-include,
 -cert-err58-cpp,
 -cert-err61-cpp,
--cert-msc30-cpp,
+-cert-msc30-c*,
 -cert-msc50-cpp,
 -clang-analyzer-alpha*,
 -clang-analyzer-alpha.deadcode.UnreachableCode,
@@ -103,6 +103,7 @@ Checks: '*,
 -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,
 -google-explicit-constructor,
@@ -131,9 +132,9 @@ Checks: '*,
 -readability-redundant-member-init,
 -readability-simplify-boolean-expr,
 
-
 -SectionComment_Temporarily_disabled_checks__We_need_to_investigate_them_one_by_one,
 
+-bugprone-misplaced-widening-cast,
 
 '
 # keep the closing quotation mark
\ No newline at end of file
diff --git a/App/AppOptions.cpp b/App/AppOptions.cpp
index 3e96eca7d02..64df880a829 100644
--- a/App/AppOptions.cpp
+++ b/App/AppOptions.cpp
@@ -64,12 +64,12 @@ ApplicationOptions::ApplicationOptions(int argc, char** argv) : m_options_is_con
 
 const bpo::variable_value& ApplicationOptions::operator[](const std::string& s) const
 {
-    return m_variables_map[s.c_str()];
+    return m_variables_map[s];
 }
 
 bool ApplicationOptions::find(std::string name) const
 {
-    return (m_variables_map.count(name.c_str()));
+    return (m_variables_map.count(name));
 }
 
 bool ApplicationOptions::isConsistent() const
diff --git a/GUI/View/Realspace/IPositionBuilder.cpp b/GUI/View/Realspace/IPositionBuilder.cpp
index 488f1a472c2..18250c54864 100644
--- a/GUI/View/Realspace/IPositionBuilder.cpp
+++ b/GUI/View/Realspace/IPositionBuilder.cpp
@@ -228,7 +228,7 @@ RadialParacrystalPositionBuilder::generatePositionsImpl(double layer_size, doubl
     // for populating particles correctly within the 3D model's boundaries
     int n = distance <= 0.0 ? 1 : static_cast<int>(layer_size * std::sqrt(2.0) / distance);
 
-    lattice_positions.resize(static_cast<size_t>(2 * n + 1));
+    lattice_positions.resize(2 * n + 1);
     for (auto& it : lattice_positions) {
         it.resize(2);
     }
@@ -241,17 +241,15 @@ RadialParacrystalPositionBuilder::generatePositionsImpl(double layer_size, doubl
         unsigned i_left = static_cast<unsigned>(std::max(0, 2 * i - 3));
 
         double offset = m_iff->randomSample();
-        lattice_positions[static_cast<size_t>(2 * i - 1)][0] =
+        lattice_positions[2 * i - 1][0] =
             lattice_positions[i_left][0] + distance + offset;
-        lattice_positions[static_cast<size_t>(2 * i - 1)][1] = 0.0;
+        lattice_positions[2 * i - 1][1] = 0.0;
 
         // positions of particles located along -x (store at even index)
-        unsigned i_right = static_cast<unsigned>(2 * (i - 1));
-
         offset = m_iff->randomSample();
-        lattice_positions[static_cast<size_t>(2 * i)][0] =
-            lattice_positions[i_right][0] - distance + offset;
-        lattice_positions[static_cast<size_t>(2 * i)][1] = 0.0;
+        lattice_positions[2 * i][0] =
+            lattice_positions[2 * (i - 1)][0] - distance + offset;
+        lattice_positions[2 * i][1] = 0.0;
     }
     return lattice_positions;
 }
diff --git a/GUI/View/Realspace/RealSpace2DParacrystalUtils.cpp b/GUI/View/Realspace/RealSpace2DParacrystalUtils.cpp
index a63352a1262..c899f69dee7 100644
--- a/GUI/View/Realspace/RealSpace2DParacrystalUtils.cpp
+++ b/GUI/View/Realspace/RealSpace2DParacrystalUtils.cpp
@@ -13,56 +13,11 @@
 //  ************************************************************************************************
 
 #include "GUI/View/Realspace/RealSpace2DParacrystalUtils.h"
+#include "Base/Util/Assert.h"
 #include "Sample/Aggregate/Interference2DParaCrystal.h"
 
 namespace {
-void ResizeLatticePositions(std::vector<std::vector<double>>& lattice_positions, double l1,
-                            double l2, double layer_size);
-void FindLatticePositionsIndex(size_t& index, size_t& index_prev, int i, int j, int size,
-                               double l_alpha);
-std::pair<double, double> ComputePositionAlongPositiveLatticeVector(
-    const size_t index_prev, std::vector<std::vector<double>>& lattice_positions,
-    const IFTDistribution2D* pdf, double l, double l_xi, double l_alpha);
-std::pair<double, double> ComputePositionAlongNegativeLatticeVector(
-    const size_t index_prev, std::vector<std::vector<double>>& lattice_positions,
-    const IFTDistribution2D* pdf, double l, double l_xi, double l_alpha);
-std::pair<double, double>
-ComputeLatticePosition(const size_t index_prev, int i, int j,
-                       std::vector<std::vector<double>>& lattice_positions,
-                       const IFTDistribution2D* pdf, double l, double l_xi, double l_alpha);
-void ComputePositionsAlongLatticeVectorAxes(std::vector<std::vector<double>>& lattice_positions,
-                                            const IFTDistribution2D* pdf, double l, double l_xi,
-                                            double l_alpha);
-void ComputePositionsInsideLatticeQuadrants(std::vector<std::vector<double>>& lattice_positions,
-                                            const IFTDistribution2D* pdf1,
-                                            const IFTDistribution2D* pdf2, double l1, double l2,
-                                            double l_xi, double l_alpha);
-} // namespace
-
-std::vector<std::vector<double>>
-GUI::RealSpace::Paracrystal2D::latticePositions(const Interference2DParaCrystal* p_iff,
-                                                double layer_size)
-{
-    auto& lattice = p_iff->lattice();
-    double l1 = lattice.length1();
-    double l2 = lattice.length2();
-    double alpha = lattice.latticeAngle();
-    double xi = lattice.rotationAngle();
 
-    std::vector<std::vector<double>> lattice_positions;
-    ResizeLatticePositions(lattice_positions, l1, l2, layer_size);
-
-    ComputePositionsAlongLatticeVectorAxes(lattice_positions, p_iff->pdf1(), l1, xi, 0);
-
-    ComputePositionsAlongLatticeVectorAxes(lattice_positions, p_iff->pdf2(), l2, xi, alpha);
-
-    ComputePositionsInsideLatticeQuadrants(lattice_positions, p_iff->pdf1(), p_iff->pdf2(), l1, l2,
-                                           xi, alpha);
-
-    return lattice_positions;
-}
-
-namespace {
 void ResizeLatticePositions(std::vector<std::vector<double>>& lattice_positions, double l1,
                             double l2, double layer_size)
 {
@@ -74,7 +29,7 @@ void ResizeLatticePositions(std::vector<std::vector<double>>& lattice_positions,
 
     n1 = std::max(n1, n2);
 
-    lattice_positions.resize(static_cast<size_t>((2 * n1 + 1) * (2 * n1 + 1)));
+    lattice_positions.resize((2 * n1 + 1) * (2 * n1 + 1));
     for (auto& it : lattice_positions) {
         it.resize(2);
     }
@@ -86,17 +41,17 @@ void ResizeLatticePositions(std::vector<std::vector<double>>& lattice_positions,
 void FindLatticePositionsIndex(size_t& index, size_t& index_prev, int i, int j, int size,
                                double l_alpha)
 {
-    index = static_cast<size_t>(i * (2 * size + 1) + j);
+    int newindex = i * (2 * size + 1) + j;
+    ASSERT(newindex>0);
+    index = newindex;
 
-    if (std::sin(l_alpha) == 0) // along l1
-    {
+    if (std::sin(l_alpha) == 0) { // along l1
         // particles along +l1 stored every odd iter (e.g. 1,3,5...) index of lattice_positions
         // particles along -l1 stored every even iter (e.g. 2,4,6...) index of lattice_positions
         index_prev = static_cast<size_t>(i * (2 * size + 1));
         if (j - 2 > 0)
             index_prev = index - 2;
-    } else // along l2
-    {
+    } else { // along l2
         // particles along +l2/-l2 stored every (odd/even iter)*(2*n1+1) index of lattice_positions
         index_prev = static_cast<size_t>(j);
         if (i - 2 > 0)
@@ -229,4 +184,33 @@ void ComputePositionsInsideLatticeQuadrants(std::vector<std::vector<double>>& la
         }
     }
 }
+
 } // namespace
+
+
+//  ************************************************************************************************
+//  implement namespace GUI::RealSpace::Paracrystal2D
+//  ************************************************************************************************
+
+std::vector<std::vector<double>>
+GUI::RealSpace::Paracrystal2D::latticePositions(const Interference2DParaCrystal* p_iff,
+                                                double layer_size)
+{
+    auto& lattice = p_iff->lattice();
+    double l1 = lattice.length1();
+    double l2 = lattice.length2();
+    double alpha = lattice.latticeAngle();
+    double xi = lattice.rotationAngle();
+
+    std::vector<std::vector<double>> lattice_positions;
+    ResizeLatticePositions(lattice_positions, l1, l2, layer_size);
+
+    ComputePositionsAlongLatticeVectorAxes(lattice_positions, p_iff->pdf1(), l1, xi, 0);
+
+    ComputePositionsAlongLatticeVectorAxes(lattice_positions, p_iff->pdf2(), l2, xi, alpha);
+
+    ComputePositionsInsideLatticeQuadrants(lattice_positions, p_iff->pdf1(), p_iff->pdf2(), l1, l2,
+                                           xi, alpha);
+
+    return lattice_positions;
+}
diff --git a/GUI/View/SampleDesigner/SampleEditorCommands.cpp b/GUI/View/SampleDesigner/SampleEditorCommands.cpp
index c2cdac4d739..e6cc6c2b4a4 100644
--- a/GUI/View/SampleDesigner/SampleEditorCommands.cpp
+++ b/GUI/View/SampleDesigner/SampleEditorCommands.cpp
@@ -19,8 +19,11 @@
 #include "GUI/View/SampleDesigner/SampleEditorController.h"
 
 namespace {
-static constexpr int COMMAND_ID_CHANGE_VALUE = 11;
-}
+
+constexpr int COMMAND_ID_CHANGE_VALUE = 11;
+
+} // namespace
+
 
 CommandRemoveLayer::CommandRemoveLayer(SampleEditorController* ec, LayerItem* layerItem,
                                        QUndoCommand* parent /*= nullptr*/)
diff --git a/GUI/View/SampleDesigner/SampleToolBoxGroupView.cpp b/GUI/View/SampleDesigner/SampleToolBoxGroupView.cpp
index 20ee33dc39c..aebb8a1ecd8 100644
--- a/GUI/View/SampleDesigner/SampleToolBoxGroupView.cpp
+++ b/GUI/View/SampleDesigner/SampleToolBoxGroupView.cpp
@@ -104,8 +104,9 @@ QVariant SampleToolBoxGroupModel::data(const QModelIndex& index, int role) const
     }
     case FILTER_ROLE:
         return item.filter;
+    default:
+        return {};
     }
-    return QVariant();
 }
 
 Qt::ItemFlags SampleToolBoxGroupModel::flags(const QModelIndex& /*index*/) const
diff --git a/GUI/View/Tool/DesignerHelper.cpp b/GUI/View/Tool/DesignerHelper.cpp
index 9d299b3fce8..520147f7848 100644
--- a/GUI/View/Tool/DesignerHelper.cpp
+++ b/GUI/View/Tool/DesignerHelper.cpp
@@ -23,6 +23,7 @@ namespace {
 double m_current_zoom_level = 1.0;
 }
 
+
 QGradient DesignerHelper::getLayerGradient(const QColor& color, const QRectF& rect)
 {
     QColor c = color;
@@ -42,7 +43,7 @@ QGradient DesignerHelper::getLayerGradient(const QColor& color, const QRectF& re
 
 QGradient DesignerHelper::getDecorationGradient(const QColor& color, const QRectF& rect)
 {
-    QColor c = color;
+    const QColor& c = color;
     // c.setAlpha(200);
     QLinearGradient result(rect.x() + rect.width() / 2, rect.y(), rect.x() + rect.width() / 2,
                            rect.y() + rect.height());
-- 
GitLab