From 423f9ffd8fe94ab9a3d124f2cfc01557a73867eb Mon Sep 17 00:00:00 2001
From: "Joachim Wuttke (o)" <j.wuttke@fz-juelich.de>
Date: Mon, 26 Jul 2021 18:45:35 +0200
Subject: [PATCH] Comments and separators -> GUIDomainSampleVisitor

---
 GUI/Models/GUIDomainSampleVisitor.cpp | 19 ++++++++++++++++++-
 GUI/Models/GUIDomainSampleVisitor.h   |  1 +
 GUI/Models/GUIObjectBuilder.cpp       |  4 +---
 3 files changed, 20 insertions(+), 4 deletions(-)

diff --git a/GUI/Models/GUIDomainSampleVisitor.cpp b/GUI/Models/GUIDomainSampleVisitor.cpp
index 3b274635e14..63e8c479147 100644
--- a/GUI/Models/GUIDomainSampleVisitor.cpp
+++ b/GUI/Models/GUIDomainSampleVisitor.cpp
@@ -61,6 +61,10 @@ template <typename T> T* AddFormFactorItem(SessionItem* parent)
 }
 } // namespace
 
+//  ************************************************************************************************
+//  class implementation
+//  ************************************************************************************************
+
 GUIDomainSampleVisitor::GUIDomainSampleVisitor() : m_sampleModel(nullptr), m_materialModel(nullptr)
 {
 }
@@ -82,7 +86,7 @@ SessionItem* GUIDomainSampleVisitor::populateSampleModel(SampleModel* sampleMode
 
     for (const auto& [child, depth, parent] : NodeUtils::progenyPlus(&sample)) {
         setDepth(depth + 1);
-        child->accept(this);
+        child->accept(this); // will call back one of the visit functions defined below
     }
     SessionItem* result = m_levelToParentItem[1];
 
@@ -90,6 +94,10 @@ SessionItem* GUIDomainSampleVisitor::populateSampleModel(SampleModel* sampleMode
     return result;
 }
 
+//  ------------------------------------------------------------------------------------------------
+//  visit functions
+//  ------------------------------------------------------------------------------------------------
+
 void GUIDomainSampleVisitor::visit(const ParticleLayout* sample)
 {
     SessionItem* parent = m_levelToParentItem[depth() - 1];
@@ -543,6 +551,10 @@ void GUIDomainSampleVisitor::visit(const RotationEuler* sample)
     m_levelToParentItem[depth()] = transformation_item;
 }
 
+//  ------------------------------------------------------------------------------------------------
+//  private functions for use in the above visit functions
+//  ------------------------------------------------------------------------------------------------
+
 ExternalProperty GUIDomainSampleVisitor::createMaterialFromDomain(const Material* material)
 {
     QString materialName = m_topSampleName + QString("_") + QString(material->getName().c_str());
@@ -567,12 +579,16 @@ ExternalProperty GUIDomainSampleVisitor::createMaterialFromDomain(const Material
     return GUI::Model::MaterialItemUtils::materialProperty(*materialItem);
 }
 
+// Function CreateIParticle, used only by GUIDomainSampleVisitor::InsertIParticle
+
+// Default definition for any T, except if overwritten below
 template <typename T>
 T* GUIDomainSampleVisitor::CreateIParticle(SessionItem* parent, const IParticle*)
 {
     return m_sampleModel->insertItem<T>(parent, -1);
 }
 
+// Special definition for T=ParticleItem
 template <>
 ParticleItem* GUIDomainSampleVisitor::CreateIParticle(SessionItem* parent,
                                                       const IParticle* particle)
@@ -594,6 +610,7 @@ ParticleItem* GUIDomainSampleVisitor::CreateIParticle(SessionItem* parent,
         return m_sampleModel->insertItem<ParticleItem>(parent, -1);
 }
 
+// Used only in this file
 template <typename T> T* GUIDomainSampleVisitor::InsertIParticle(const IParticle* particle)
 {
     auto parent = m_levelToParentItem[depth() - 1];
diff --git a/GUI/Models/GUIDomainSampleVisitor.h b/GUI/Models/GUIDomainSampleVisitor.h
index 90e27a6ca7e..599f1220a9e 100644
--- a/GUI/Models/GUIDomainSampleVisitor.h
+++ b/GUI/Models/GUIDomainSampleVisitor.h
@@ -26,6 +26,7 @@ class ExternalProperty;
 class Material;
 
 //! Visits domain sample tree to build GUI presentation.
+//! Used from ObjectBuilder::populateSampleModel
 
 class GUIDomainSampleVisitor : public INodeVisitor {
 public:
diff --git a/GUI/Models/GUIObjectBuilder.cpp b/GUI/Models/GUIObjectBuilder.cpp
index 0ff919040ef..9a37944a2f7 100644
--- a/GUI/Models/GUIObjectBuilder.cpp
+++ b/GUI/Models/GUIObjectBuilder.cpp
@@ -99,9 +99,7 @@ SessionItem* GUI::Model::ObjectBuilder::populateInstrumentModel(InstrumentModel*
         return createOffSpecularInstrumentItem(p_instrument_model, *offSpecSimulation, name);
     if (auto spec_simulation = dynamic_cast<const SpecularSimulation*>(&simulation))
         return createSpecularInstrumentItem(p_instrument_model, *spec_simulation, name);
-
-    throw Error("GUI::Model::ObjectBuilder::populateInstrumentModel() -> Error. ISimulation is "
-                "not yet supported");
+    ASSERT(0);
 }
 
 SessionItem* GUI::Model::ObjectBuilder::populateDocumentModel(DocumentModel* p_document_model,
-- 
GitLab