From 7c83fd53909b8cf9a7d949c9e2e55311e0c50326 Mon Sep 17 00:00:00 2001
From: Gennady Pospelov <g.pospelov@fz-juelich.de>
Date: Tue, 3 Dec 2013 18:02:16 +0100
Subject: [PATCH] Composite iterator changed to const

---
 App/src/TestMiscellaneous.cpp            |  21 ++--
 Core/Samples/inc/ICompositeIterator.h    |  16 +--
 Core/Samples/inc/ICompositeSample.h      |   2 +-
 Core/Samples/inc/ISampleVisitor.h        |   2 +-
 Core/Samples/inc/Particle.h              |   6 +-
 Core/Samples/src/ICompositeSample.cpp    |   2 +-
 Core/Samples/src/ISample.cpp             |  21 ++--
 Core/Samples/src/ISampleVisitor.cpp      |   4 +-
 Core/Tools/inc/SampleMaterialVisitor.h   |   3 +
 Core/Tools/src/SampleMaterialVisitor.cpp | 132 +++++++++++++----------
 10 files changed, 121 insertions(+), 88 deletions(-)

diff --git a/App/src/TestMiscellaneous.cpp b/App/src/TestMiscellaneous.cpp
index b6a6283d640..4d3b72e50b6 100644
--- a/App/src/TestMiscellaneous.cpp
+++ b/App/src/TestMiscellaneous.cpp
@@ -82,12 +82,12 @@ void TestMiscellaneous::test_PrintVisitor()
     std::cout << "TestMiscellaneous::test_PrintVisitor() ->" << std::endl;
     SampleBuilderFactory factory;
 
-    for(SampleBuilderFactory::iterator it = factory.begin(); it!= factory.end(); ++it) {
-        ISample *sample = factory.createSample((*it).first);
-        std::cout << std::endl << ">>> " << (*it).first << " <<<" << std::endl;
-        sample->printSampleTree();
-        delete sample;
-    }
+//    for(SampleBuilderFactory::iterator it = factory.begin(); it!= factory.end(); ++it) {
+//        ISample *sample = factory.createSample((*it).first);
+//        std::cout << std::endl << ">>> " << (*it).first << " <<<" << std::endl;
+//        sample->printSampleTree();
+//        delete sample;
+//    }
 
 //    ISample *sample = factory.createSample("isgisaxs06_lattice1");
 //    sample->printSampleTree();
@@ -99,6 +99,15 @@ void TestMiscellaneous::test_PrintVisitor()
 //    MultiLayer *ml2 = ml.clone();
 //    ml2->printSampleTree();
 
+    for(SampleBuilderFactory::iterator it = factory.begin(); it!= factory.end(); ++it) {
+        ISample *sample = factory.createSample((*it).first);
+        //std::cout << std::endl << ">>> " << (*it).first << " <<<" << std::endl;
+        //sample->printSampleTree();
+        std::cout << "xxx " << (*it).first << " " << sample->containsMagneticMaterial() << std::endl;
+        delete sample;
+    }
+
+
 }
 
 
diff --git a/Core/Samples/inc/ICompositeIterator.h b/Core/Samples/inc/ICompositeIterator.h
index 933f4ac8200..503527b92fd 100644
--- a/Core/Samples/inc/ICompositeIterator.h
+++ b/Core/Samples/inc/ICompositeIterator.h
@@ -28,9 +28,9 @@
 class MementoState
 {
 public:
-    typedef std::list<ISample*>::iterator iterator_t;
+    typedef std::list<ISample*>::const_iterator const_iterator_t;
 
-    MementoState(iterator_t itor, iterator_t end_itor)
+    MementoState(const_iterator_t itor, const_iterator_t end_itor)
         : m_itor( itor ), m_end_itor( end_itor ) {}
 
     MementoState& operator=(const MementoState& other)
@@ -44,7 +44,7 @@ public:
 
     virtual ~MementoState() {}
 
-    iterator_t& get_itor() { return m_itor; }
+    const_iterator_t& get_itor() { return m_itor; }
     bool is_end() const { return m_itor == m_end_itor; }
     void next() { m_itor++; }
 
@@ -52,8 +52,8 @@ public:
     { return  (o << "memento state " <<& m.m_itor << " " <<& m.m_end_itor); }
 
 protected:
-    iterator_t m_itor;
-    iterator_t m_end_itor;
+    const_iterator_t m_itor;
+    const_iterator_t m_end_itor;
 
 private:
     MementoState();
@@ -73,7 +73,7 @@ public:
     MementoState& get_state() { return m_state_stack.top(); }
     bool empty() const { return m_state_stack.empty(); }
     void reset() { while(!m_state_stack.empty()) m_state_stack.pop(); }
-    MementoState::iterator_t& get_current_itor()
+    MementoState::const_iterator_t& get_current_itor()
     { return m_state_stack.top().get_itor(); }
     void next() { m_state_stack.top().next(); }
     size_t size() { return m_state_stack.size(); }
@@ -95,7 +95,7 @@ protected:
 class ICompositeIterator
 {
 public:
-    ICompositeIterator(ICompositeSample *root) : m_root(root), m_done(false) {}
+    ICompositeIterator(const ICompositeSample *root) : m_root(root), m_done(false) {}
     virtual ~ICompositeIterator() {}
 
     void first();
@@ -105,7 +105,7 @@ public:
     size_t get_level() { return m_memento_itor.size(); }
 protected:
     MementoIterator m_memento_itor;
-    ICompositeSample* m_root;
+    const ICompositeSample* m_root;
     bool m_done;
 };
 
diff --git a/Core/Samples/inc/ICompositeSample.h b/Core/Samples/inc/ICompositeSample.h
index bd2e4b39438..289bea220f3 100644
--- a/Core/Samples/inc/ICompositeSample.h
+++ b/Core/Samples/inc/ICompositeSample.h
@@ -61,7 +61,7 @@ public:
     virtual size_t size() const { return m_samples.size(); }
 
     //! Creates general iterator to walk through tree of composite children.
-    class ICompositeIterator createIterator();
+    class ICompositeIterator createIterator() const;
 
 private:
     //! List of registered children.
diff --git a/Core/Samples/inc/ISampleVisitor.h b/Core/Samples/inc/ISampleVisitor.h
index 18c96c6ed33..88530f0ce5b 100644
--- a/Core/Samples/inc/ISampleVisitor.h
+++ b/Core/Samples/inc/ISampleVisitor.h
@@ -189,7 +189,7 @@ private:
     int m_level;
 };
 
-void VisitSampleTree(ISample &sample, ISampleVisitor &visitor);
+void VisitSampleTree(const ISample &sample, ISampleVisitor &visitor);
 
 
 #endif // ISAMPLEVISITOR_H
diff --git a/Core/Samples/inc/Particle.h b/Core/Samples/inc/Particle.h
index a15353cf26c..1da3d32916b 100644
--- a/Core/Samples/inc/Particle.h
+++ b/Core/Samples/inc/Particle.h
@@ -50,6 +50,9 @@ public:
         mp_ambient_material = p_material;
     }
 
+    //! Returns particle's material.
+    virtual const IMaterial* getAmbientMaterial() const { return mp_ambient_material; }
+
     //! Create a form factor which includes the particle's shape,
     //! material, ambient material, an optional transformation and an extra
     //! scattering factor
@@ -61,10 +64,9 @@ public:
         mp_material = p_material;
     }
 
-    //! Returns layer's material.
+    //! Returns particle's material.
     virtual const IMaterial* getMaterial() const { return mp_material; }
 
-
     //! Returns refractive index of the particle
     virtual complex_t getRefractiveIndex() const
     {
diff --git a/Core/Samples/src/ICompositeSample.cpp b/Core/Samples/src/ICompositeSample.cpp
index 5eddbb6df39..75a0e65ec96 100644
--- a/Core/Samples/src/ICompositeSample.cpp
+++ b/Core/Samples/src/ICompositeSample.cpp
@@ -40,7 +40,7 @@ void ICompositeSample::deregisterChild(ISample *sample)
 
 //! Creates general iterator to walk through the tree of registered composite children
 
-ICompositeIterator ICompositeSample::createIterator()
+ICompositeIterator ICompositeSample::createIterator() const
 {
     return ICompositeIterator(this);
 }
diff --git a/Core/Samples/src/ISample.cpp b/Core/Samples/src/ISample.cpp
index 52294866f15..cf99e01c98b 100644
--- a/Core/Samples/src/ISample.cpp
+++ b/Core/Samples/src/ISample.cpp
@@ -82,15 +82,18 @@ void ISample::printSampleTree()
 bool ISample::containsMagneticMaterial() const
 {
     SampleMaterialVisitor material_vis;
-    this->accept(&material_vis);
-    std::vector<const IMaterial *> materials = material_vis.getMaterials();
-    for (std::vector<const IMaterial *>::const_iterator it = materials.begin();
-            it != materials.end(); ++it) {
-        if (!(*it)->isScalarMaterial()) {
-            return true;
-        }
-    }
-    return false;
+//    this->accept(&material_vis);
+//    std::vector<const IMaterial *> materials = material_vis.getMaterials();
+//    for (std::vector<const IMaterial *>::const_iterator it = materials.begin();
+//            it != materials.end(); ++it) {
+//        if (!(*it)->isScalarMaterial()) {
+//            return true;
+//        }
+//    }
+//    return false;
+    VisitSampleTree(*this, material_vis);
+    return material_vis.containsMagneticMaterial();
+
 }
 
 void ISample::print(std::ostream& ostr) const
diff --git a/Core/Samples/src/ISampleVisitor.cpp b/Core/Samples/src/ISampleVisitor.cpp
index e753e720be0..aef894f2c2e 100644
--- a/Core/Samples/src/ISampleVisitor.cpp
+++ b/Core/Samples/src/ISampleVisitor.cpp
@@ -4,10 +4,10 @@
 #include "ICompositeIterator.h"
 
 
-void VisitSampleTree(ISample &sample, ISampleVisitor &visitor)
+void VisitSampleTree(const ISample &sample, ISampleVisitor &visitor)
 {
     sample.accept(&visitor);
-    ICompositeSample *composite = sample.getCompositeSample();
+    const ICompositeSample *composite = sample.getCompositeSample();
     if(composite) {
         ICompositeIterator it = composite->createIterator();
         it.first();
diff --git a/Core/Tools/inc/SampleMaterialVisitor.h b/Core/Tools/inc/SampleMaterialVisitor.h
index c96a15df966..cd3409d9356 100644
--- a/Core/Tools/inc/SampleMaterialVisitor.h
+++ b/Core/Tools/inc/SampleMaterialVisitor.h
@@ -107,6 +107,9 @@ public:
         return m_materials;
     }
 
+    //! return true if contains magnetic materials
+    bool containsMagneticMaterial() const;
+
 protected:
     void addMaterial(const IMaterial *p_material);
     std::vector<const IMaterial *> m_materials;
diff --git a/Core/Tools/src/SampleMaterialVisitor.cpp b/Core/Tools/src/SampleMaterialVisitor.cpp
index dd43edd1456..660c5390f5e 100644
--- a/Core/Tools/src/SampleMaterialVisitor.cpp
+++ b/Core/Tools/src/SampleMaterialVisitor.cpp
@@ -16,6 +16,7 @@
 #include "IMaterial.h"
 #include "Layer.h"
 #include "Particle.h"
+#include "LatticeBasis.h"
 
 
 SampleMaterialVisitor::~SampleMaterialVisitor()
@@ -31,43 +32,58 @@ void SampleMaterialVisitor::addMaterial(const IMaterial* p_material)
     }
 }
 
+
+bool SampleMaterialVisitor::containsMagneticMaterial() const {
+    for (std::vector<const IMaterial *>::const_iterator it = m_materials.begin();
+            it != m_materials.end(); ++it) {
+        const IMaterial *material = (*it);
+        if(material) {
+            if (!(*it)->isScalarMaterial()) return true;
+        } else {
+            std::cout << "XXX SampleMaterialVisitor::containsMagneticMaterial() -> zero material." << std::endl;
+        }
+    }
+    return false;
+}
+
+
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
 
 void SampleMaterialVisitor::visit(const ISample *)
 {
-    throw NotImplementedException("SampleMaterialVisitor::visit(const ISample *) -> Error. Not implemented.");
+//    throw NotImplementedException("SampleMaterialVisitor::visit(const ISample *) -> Error. Not implemented.");
 }
 
 
 void SampleMaterialVisitor::visit(const ICompositeSample *)
 {
-    throw NotImplementedException("SampleMaterialVisitor::visit(const ICompositeSample *) -> Error. Not implemented.");
+//    throw NotImplementedException("SampleMaterialVisitor::visit(const ICompositeSample *) -> Error. Not implemented.");
 }
 
 
 void SampleMaterialVisitor::visit(const IClusteredParticles *)
 {
-    throw NotImplementedException("SampleMaterialVisitor::visit(const IClusteredParticles *) -> Error. Not implemented.");
+//    throw NotImplementedException("SampleMaterialVisitor::visit(const IClusteredParticles *) -> Error. Not implemented.");
 }
 
 
 void SampleMaterialVisitor::visit(const Crystal *)
 {
-    throw NotImplementedException("SampleMaterialVisitor::visit(const Crystal *) -> Error. Not implemented.");
+//    throw NotImplementedException("SampleMaterialVisitor::visit(const Crystal *) -> Error. Not implemented.");
 }
 
 
 void SampleMaterialVisitor::visit(const IDecoration *)
 {
-    throw NotImplementedException("SampleMaterialVisitor::visit(const IDecoration *) -> Error. Not implemented.");
+//    throw NotImplementedException("SampleMaterialVisitor::visit(const IDecoration *) -> Error. Not implemented.");
 }
 
 
 void SampleMaterialVisitor::visit(const ParticleDecoration *)
 {
-    throw NotImplementedException("SampleMaterialVisitor::visit(const ParticleDecoration *) -> Error. Not implemented.");
+//    throw NotImplementedException("SampleMaterialVisitor::visit(const ParticleDecoration *) -> Error. Not implemented.");
 }
 
 
@@ -81,296 +97,296 @@ void SampleMaterialVisitor::visit(const Layer *sample)
 
 void SampleMaterialVisitor::visit(const LayerInterface *)
 {
-    throw NotImplementedException("SampleMaterialVisitor::visit(const LayerInterface *) -> Error. Not implemented.");
+//    throw NotImplementedException("SampleMaterialVisitor::visit(const LayerInterface *) -> Error. Not implemented.");
 }
 
 
-void SampleMaterialVisitor::visit(const MultiLayer *sample)
+void SampleMaterialVisitor::visit(const MultiLayer *)
 {
-    (void)sample;
+//    throw NotImplementedException("SampleMaterialVisitor::visit(const MultiLayer *) -> Error. Not implemented.");
 }
 
 
 void SampleMaterialVisitor::visit(const Particle *sample)
 {
     assert(sample);
-    const IMaterial *material = sample->getMaterial();
-    addMaterial(material);
+    addMaterial(sample->getMaterial());
+    addMaterial(sample->getAmbientMaterial());
 }
 
 
-void SampleMaterialVisitor::visit(const LatticeBasis *)
+void SampleMaterialVisitor::visit(const LatticeBasis *sample)
 {
-    throw NotImplementedException("SampleMaterialVisitor::visit(const LatticeBasis *) -> Error. Not implemented.");
+//    throw NotImplementedException("SampleMaterialVisitor::visit(const LatticeBasis *) -> Error. Not implemented.");
 }
 
 
 void SampleMaterialVisitor::visit(const MesoCrystal *)
 {
-    throw NotImplementedException("SampleMaterialVisitor::visit(const MesoCrystal *) -> Error. Not implemented.");
+//    throw NotImplementedException("SampleMaterialVisitor::visit(const MesoCrystal *) -> Error. Not implemented.");
 }
 
 
 void SampleMaterialVisitor::visit(const ParticleCoreShell *)
 {
-    throw NotImplementedException("SampleMaterialVisitor::visit(const ParticleCoreShell *) -> Error. Not implemented.");
+//    throw NotImplementedException("SampleMaterialVisitor::visit(const ParticleCoreShell *) -> Error. Not implemented.");
 }
 
 
 void SampleMaterialVisitor::visit(const ParticleInfo *)
 {
-    throw NotImplementedException("SampleMaterialVisitor::visit(const ParticleInfo *) -> Error. Not implemented.");
+//    throw NotImplementedException("SampleMaterialVisitor::visit(const ParticleInfo *) -> Error. Not implemented.");
 }
 
 
 void SampleMaterialVisitor::visit(const DiffuseParticleInfo *)
 {
-    throw NotImplementedException("SampleMaterialVisitor::visit(const DiffuseParticleInfo *) -> Error. Not implemented.");
+//    throw NotImplementedException("SampleMaterialVisitor::visit(const DiffuseParticleInfo *) -> Error. Not implemented.");
 }
 
 
 void SampleMaterialVisitor::visit(const PositionParticleInfo *)
 {
-    throw NotImplementedException("SampleMaterialVisitor::visit(const PositionParticleInfo *) -> Error. Not implemented.");
+//    throw NotImplementedException("SampleMaterialVisitor::visit(const PositionParticleInfo *) -> Error. Not implemented.");
 }
 
 
 void SampleMaterialVisitor::visit(const IFormFactor *)
 {
-    throw NotImplementedException("SampleMaterialVisitor::visit(const IFormFactor *) -> Error. Not implemented.");
+//    throw NotImplementedException("SampleMaterialVisitor::visit(const IFormFactor *) -> Error. Not implemented.");
 }
 
 
 void SampleMaterialVisitor::visit(const FormFactorDWBAPol *)
 {
-    throw NotImplementedException("SampleMaterialVisitor::visit(const FormFactorDWBAPol *) -> Error. Not implemented.");
+//    throw NotImplementedException("SampleMaterialVisitor::visit(const FormFactorDWBAPol *) -> Error. Not implemented.");
 }
 
 
 void SampleMaterialVisitor::visit(const FormFactorDWBAPolConstZ *)
 {
-    throw NotImplementedException("SampleMaterialVisitor::visit(const FormFactorDWBAPolConstZ *) -> Error. Not implemented.");
+//    throw NotImplementedException("SampleMaterialVisitor::visit(const FormFactorDWBAPolConstZ *) -> Error. Not implemented.");
 }
 
 
 void SampleMaterialVisitor::visit(const FormFactorWeighted *)
 {
-    throw NotImplementedException("SampleMaterialVisitor::visit(const FormFactorWeighted *) -> Error. Not implemented.");
+//    throw NotImplementedException("SampleMaterialVisitor::visit(const FormFactorWeighted *) -> Error. Not implemented.");
 }
 
 
 void SampleMaterialVisitor::visit(const IFormFactorBorn *)
 {
-    throw NotImplementedException("SampleMaterialVisitor::visit(const IFormFactorBorn *) -> Error. Not implemented.");
+//    throw NotImplementedException("SampleMaterialVisitor::visit(const IFormFactorBorn *) -> Error. Not implemented.");
 }
 
 
 void SampleMaterialVisitor::visit(const FormFactorBox *)
 {
-    throw NotImplementedException("SampleMaterialVisitor::visit(const FormFactorBox *) -> Error. Not implemented.");
+//    throw NotImplementedException("SampleMaterialVisitor::visit(const FormFactorBox *) -> Error. Not implemented.");
 }
 
 
 void SampleMaterialVisitor::visit(const FormFactorCone *)
 {
-    throw NotImplementedException("SampleMaterialVisitor::visit(const FormFactorCone *) -> Error. Not implemented.");
+//    throw NotImplementedException("SampleMaterialVisitor::visit(const FormFactorCone *) -> Error. Not implemented.");
 }
 
 
 void SampleMaterialVisitor::visit(const FormFactorCone6 *)
 {
-    throw NotImplementedException("SampleMaterialVisitor::visit(const FormFactorCone6 *) -> Error. Not implemented.");
+//    throw NotImplementedException("SampleMaterialVisitor::visit(const FormFactorCone6 *) -> Error. Not implemented.");
 }
 
 
 void SampleMaterialVisitor::visit(const FormFactorCrystal *)
 {
-    throw NotImplementedException("SampleMaterialVisitor::visit(const FormFactorCrystal *) -> Error. Not implemented.");
+//    throw NotImplementedException("SampleMaterialVisitor::visit(const FormFactorCrystal *) -> Error. Not implemented.");
 }
 
 
 void SampleMaterialVisitor::visit(const FormFactorCylinder *)
 {
-    throw NotImplementedException("SampleMaterialVisitor::visit(const FormFactorCylinder *) -> Error. Not implemented.");
+//    throw NotImplementedException("SampleMaterialVisitor::visit(const FormFactorCylinder *) -> Error. Not implemented.");
 }
 
 
 void SampleMaterialVisitor::visit(const FormFactorEllipsoid *)
 {
-    throw NotImplementedException("SampleMaterialVisitor::visit(const FormFactorEllipsoid *) -> Error. Not implemented.");
+//    throw NotImplementedException("SampleMaterialVisitor::visit(const FormFactorEllipsoid *) -> Error. Not implemented.");
 }
 
 
 void SampleMaterialVisitor::visit(const FormFactorFullSphere *)
 {
-    throw NotImplementedException("SampleMaterialVisitor::visit(const FormFactorFullSphere *) -> Error. Not implemented.");
+//    throw NotImplementedException("SampleMaterialVisitor::visit(const FormFactorFullSphere *) -> Error. Not implemented.");
 }
 
 
 void SampleMaterialVisitor::visit(const FormFactorFullSpheroid *)
 {
-    throw NotImplementedException("SampleMaterialVisitor::visit(const FormFactorFullSpheroid *) -> Error. Not implemented.");
+//    throw NotImplementedException("SampleMaterialVisitor::visit(const FormFactorFullSpheroid *) -> Error. Not implemented.");
 }
 
 
 void SampleMaterialVisitor::visit(const FormFactorGauss *)
 {
-    throw NotImplementedException("SampleMaterialVisitor::visit(const FormFactorGauss *) -> Error. Not implemented.");
+//    throw NotImplementedException("SampleMaterialVisitor::visit(const FormFactorGauss *) -> Error. Not implemented.");
 }
 
 
 void SampleMaterialVisitor::visit(const FormFactorHemiSpheroid *)
 {
-    throw NotImplementedException("SampleMaterialVisitor::visit const FormFactorHemiSpheroid *) -> Error. Not implemented.");
+//    throw NotImplementedException("SampleMaterialVisitor::visit const FormFactorHemiSpheroid *) -> Error. Not implemented.");
 }
 
 
 void SampleMaterialVisitor::visit(const FormFactorLorentz *)
 {
-    throw NotImplementedException("SampleMaterialVisitor::visit(const FormFactorLorentz *) -> Error. Not implemented.");
+//    throw NotImplementedException("SampleMaterialVisitor::visit(const FormFactorLorentz *) -> Error. Not implemented.");
 }
 
 
 void SampleMaterialVisitor::visit(const FormFactorParallelepiped *)
 {
-    throw NotImplementedException("SampleMaterialVisitor::visit(const FormFactorParallelepiped *) -> Error. Not implemented.");
+//    throw NotImplementedException("SampleMaterialVisitor::visit(const FormFactorParallelepiped *) -> Error. Not implemented.");
 }
 
 
 void SampleMaterialVisitor::visit(const FormFactorPrism3 *)
 {
-    throw NotImplementedException("SampleMaterialVisitor::visit(const FormFactorPrism3 *) -> Error. Not implemented.");
+//    throw NotImplementedException("SampleMaterialVisitor::visit(const FormFactorPrism3 *) -> Error. Not implemented.");
 }
 
 
 void SampleMaterialVisitor::visit(const FormFactorPrism6 *)
 {
-    throw NotImplementedException("SampleMaterialVisitor::visit(const FormFactorPrism6 *) -> Error. Not implemented.");
+//    throw NotImplementedException("SampleMaterialVisitor::visit(const FormFactorPrism6 *) -> Error. Not implemented.");
 }
 
 
 void SampleMaterialVisitor::visit(const FormFactorPyramid *)
 {
-    throw NotImplementedException("SampleMaterialVisitor::visit(const FormFactorPyramid *) -> Error. Not implemented.");
+//    throw NotImplementedException("SampleMaterialVisitor::visit(const FormFactorPyramid *) -> Error. Not implemented.");
 }
 
 
 void SampleMaterialVisitor::visit(const FormFactorSphere *)
 {
-    throw NotImplementedException("SampleMaterialVisitor::visit(const FormFactorSphere *) -> Error. Not implemented.");
+//    throw NotImplementedException("SampleMaterialVisitor::visit(const FormFactorSphere *) -> Error. Not implemented.");
 }
 
 
 void SampleMaterialVisitor::visit(const FormFactorSphereGaussianRadius *)
 {
-    throw NotImplementedException("SampleMaterialVisitor::visit(const FormFactorSphereGaussianRadius *) -> Error. Not implemented.");
+//    throw NotImplementedException("SampleMaterialVisitor::visit(const FormFactorSphereGaussianRadius *) -> Error. Not implemented.");
 }
 
 
 void SampleMaterialVisitor::visit(const FormFactorTetrahedron *)
 {
-    throw NotImplementedException("SampleMaterialVisitor::visit(const FormFactorTetrahedron *) -> Error. Not implemented.");
+//    throw NotImplementedException("SampleMaterialVisitor::visit(const FormFactorTetrahedron *) -> Error. Not implemented.");
 }
 
 
 void SampleMaterialVisitor::visit(const IFormFactorBornSeparable *)
 {
-    throw NotImplementedException("SampleMaterialVisitor::visit(const IFormFactorBornSeparable *) -> Error. Not implemented.");
+//    throw NotImplementedException("SampleMaterialVisitor::visit(const IFormFactorBornSeparable *) -> Error. Not implemented.");
 }
 
 
 void SampleMaterialVisitor::visit(const IFormFactorDecorator *)
 {
-    throw NotImplementedException("SampleMaterialVisitor::visit(const IFormFactorDecorator *) -> Error. Not implemented.");
+//    throw NotImplementedException("SampleMaterialVisitor::visit(const IFormFactorDecorator *) -> Error. Not implemented.");
 }
 
 
 void SampleMaterialVisitor::visit(const FormFactorDWBA *)
 {
-    throw NotImplementedException("SampleMaterialVisitor::visit(const FormFactorDWBA *) -> Error. Not implemented.");
+//    throw NotImplementedException("SampleMaterialVisitor::visit(const FormFactorDWBA *) -> Error. Not implemented.");
 }
 
 
 void SampleMaterialVisitor::visit(const FormFactorDWBAConstZ *)
 {
-    throw NotImplementedException("SampleMaterialVisitor::visit(const FormFactorDWBAConstZ *) -> Error. Not implemented.");
+//    throw NotImplementedException("SampleMaterialVisitor::visit(const FormFactorDWBAConstZ *) -> Error. Not implemented.");
 }
 
 
 void SampleMaterialVisitor::visit(const FormFactorDecoratorDebyeWaller *)
 {
-    throw NotImplementedException("SampleMaterialVisitor::visit(const FormFactorDecoratorDebyeWaller *) -> Error. Not implemented.");
+//    throw NotImplementedException("SampleMaterialVisitor::visit(const FormFactorDecoratorDebyeWaller *) -> Error. Not implemented.");
 }
 
 
 void SampleMaterialVisitor::visit(const FormFactorDecoratorFactor *)
 {
-    throw NotImplementedException("SampleMaterialVisitor::visit(const FormFactorDecoratorFactor *) -> Error. Not implemented.");
+//    throw NotImplementedException("SampleMaterialVisitor::visit(const FormFactorDecoratorFactor *) -> Error. Not implemented.");
 }
 
 
 void SampleMaterialVisitor::visit(const FormFactorDecoratorMaterial *)
 {
-    throw NotImplementedException("SampleMaterialVisitor::visit(const FormFactorDecoratorMaterial *) -> Error. Not implemented.");
+//    throw NotImplementedException("SampleMaterialVisitor::visit(const FormFactorDecoratorMaterial *) -> Error. Not implemented.");
 }
 
 
 void SampleMaterialVisitor::visit(const FormFactorDecoratorMultiPositionFactor *)
 {
-    throw NotImplementedException("SampleMaterialVisitor::visit(const FormFactorDecoratorMultiPositionFactor *) -> Error. Not implemented.");
+//    throw NotImplementedException("SampleMaterialVisitor::visit(const FormFactorDecoratorMultiPositionFactor *) -> Error. Not implemented.");
 }
 
 
 void SampleMaterialVisitor::visit(const FormFactorDecoratorPositionFactor *)
 {
-    throw NotImplementedException("SampleMaterialVisitor::visit(const FormFactorDecoratorPositionFactor *) -> Error. Not implemented.");
+//    throw NotImplementedException("SampleMaterialVisitor::visit(const FormFactorDecoratorPositionFactor *) -> Error. Not implemented.");
 }
 
 
 void SampleMaterialVisitor::visit(const FormFactorDecoratorTransformation *)
 {
-    throw NotImplementedException("SampleMaterialVisitor::visit(const FormFactorDecoratorTransformation *) -> Error. Not implemented.");
+//    throw NotImplementedException("SampleMaterialVisitor::visit(const FormFactorDecoratorTransformation *) -> Error. Not implemented.");
 }
 
 
 void SampleMaterialVisitor::visit(const IInterferenceFunction *)
 {
-    throw NotImplementedException("SampleMaterialVisitor::visit(const IInterferenceFunction *) -> Error. Not implemented.");
+//    throw NotImplementedException("SampleMaterialVisitor::visit(const IInterferenceFunction *) -> Error. Not implemented.");
 }
 
 
 void SampleMaterialVisitor::visit(const InterferenceFunction1DParaCrystal *){
-    throw NotImplementedException("SampleMaterialVisitor::visit(const InterferenceFunction1DParaCrystal *) -> Error. Not implemented.");
+//    throw NotImplementedException("SampleMaterialVisitor::visit(const InterferenceFunction1DParaCrystal *) -> Error. Not implemented.");
 }
 
 
 void SampleMaterialVisitor::visit(const InterferenceFunction2DLattice *)
 {
-    throw NotImplementedException("SampleMaterialVisitor::visit(const InterferenceFunction2DLattice *) -> Error. Not implemented.");
+//    throw NotImplementedException("SampleMaterialVisitor::visit(const InterferenceFunction2DLattice *) -> Error. Not implemented.");
 }
 
 
 void SampleMaterialVisitor::visit(const InterferenceFunction2DParaCrystal *)
 {
-    throw NotImplementedException("SampleMaterialVisitor::visit(const InterferenceFunction2DParaCrystal *) -> Error. Not implemented.");
+//    throw NotImplementedException("SampleMaterialVisitor::visit(const InterferenceFunction2DParaCrystal *) -> Error. Not implemented.");
 }
 
 
 void SampleMaterialVisitor::visit(const InterferenceFunctionNone *)
 {
-    throw NotImplementedException("SampleMaterialVisitor::visit(const InterferenceFunctionNone *) -> Error. Not implemented.");
+//    throw NotImplementedException("SampleMaterialVisitor::visit(const InterferenceFunctionNone *) -> Error. Not implemented.");
 }
 
 
 void SampleMaterialVisitor::visit(const IRoughness *)
 {
-    throw NotImplementedException("SampleMaterialVisitor::visit(const IRoughness *) -> Error. Not implemented.");
+//    throw NotImplementedException("SampleMaterialVisitor::visit(const IRoughness *) -> Error. Not implemented.");
 }
 
 
 void SampleMaterialVisitor::visit(const LayerRoughness *)
 {
-    throw NotImplementedException("SampleMaterialVisitor::visit(const LayerRoughness *) -> Error. Not implemented.");
+//    throw NotImplementedException("SampleMaterialVisitor::visit(const LayerRoughness *) -> Error. Not implemented.");
 }
 
 
-- 
GitLab