From f4aa5c8cd40d6c6fae6eb01a5759effb14113806 Mon Sep 17 00:00:00 2001
From: Walter Van Herck <w.van.herck@fz-juelich.de>
Date: Tue, 7 May 2013 17:55:19 +0200
Subject: [PATCH] Added accept methods to subclasses of ISample

---
 Core/FormFactors/inc/IFormFactor.h       | 3 +++
 Core/Samples/inc/Crystal.h               | 3 +++
 Core/Samples/inc/DiffuseParticleInfo.h   | 3 +++
 Core/Samples/inc/IInterferenceFunction.h | 7 +++++++
 Core/Samples/inc/ISample.h               | 2 +-
 Core/Samples/inc/LatticeBasis.h          | 3 +++
 Core/Samples/inc/Layer.h                 | 3 +++
 Core/Samples/inc/LayerDecorator.h        | 3 +++
 Core/Samples/inc/LayerInterface.h        | 3 +++
 Core/Samples/inc/LayerRoughness.h        | 3 +++
 Core/Samples/inc/MesoCrystal.h           | 3 +++
 Core/Samples/inc/MultiLayer.h            | 9 ++++++---
 Core/Samples/inc/Particle.h              | 3 +++
 Core/Samples/inc/ParticleCoreShell.h     | 3 +++
 Core/Samples/inc/ParticleDecoration.h    | 7 +++++--
 Core/Samples/inc/ParticleInfo.h          | 3 +++
 Core/Samples/inc/PositionParticleInfo.h  | 3 +++
 17 files changed, 58 insertions(+), 6 deletions(-)

diff --git a/Core/FormFactors/inc/IFormFactor.h b/Core/FormFactors/inc/IFormFactor.h
index 9da77c378f2..1215c5b84ac 100644
--- a/Core/FormFactors/inc/IFormFactor.h
+++ b/Core/FormFactors/inc/IFormFactor.h
@@ -30,6 +30,9 @@ class IFormFactor : public ISample
 
     virtual IFormFactor *clone() const=0;
 
+    //! Calls the ISampleVisitor's visit method
+    virtual void accept(ISampleVisitor *p_visitor) { p_visitor->visit(this); }
+
     //! Passes the refractive index of the ambient material in which this particle is embedded.
     virtual void setAmbientRefractiveIndex(const complex_t& refractive_index)
     {
diff --git a/Core/Samples/inc/Crystal.h b/Core/Samples/inc/Crystal.h
index 4890e016f04..8cc184da8f9 100644
--- a/Core/Samples/inc/Crystal.h
+++ b/Core/Samples/inc/Crystal.h
@@ -31,6 +31,9 @@ class Crystal : public IClusteredParticles
 
     virtual Crystal *clone() const;
 
+    //! Calls the ISampleVisitor's visit method
+    virtual void accept(ISampleVisitor *p_visitor) { p_visitor->visit(this); }
+
     virtual void setAmbientRefractiveIndex(complex_t refractive_index)
     { mp_lattice_basis->setAmbientRefractiveIndex(refractive_index); }
 
diff --git a/Core/Samples/inc/DiffuseParticleInfo.h b/Core/Samples/inc/DiffuseParticleInfo.h
index 9e18b0c890d..b39d74fab17 100644
--- a/Core/Samples/inc/DiffuseParticleInfo.h
+++ b/Core/Samples/inc/DiffuseParticleInfo.h
@@ -33,6 +33,9 @@ class DiffuseParticleInfo: public ParticleInfo
 
     virtual ~DiffuseParticleInfo() {}
 
+    //! Calls the ISampleVisitor's visit method
+    virtual void accept(ISampleVisitor *p_visitor) { p_visitor->visit(this); }
+
     //! scale abundance
     void scaleAbundance(double factor) { m_abundance *= factor; }
 
diff --git a/Core/Samples/inc/IInterferenceFunction.h b/Core/Samples/inc/IInterferenceFunction.h
index 28baff8ac8e..2c7dd3992a0 100644
--- a/Core/Samples/inc/IInterferenceFunction.h
+++ b/Core/Samples/inc/IInterferenceFunction.h
@@ -26,8 +26,15 @@ class IInterferenceFunction : public ISample
  public:
     virtual ~IInterferenceFunction() {}
 
+    //! Evaluates the interference function for a given wavevector transfer
     virtual double evaluate(const cvector_t& q) const=0;
+
     virtual IInterferenceFunction *clone() const=0;
+
+    //! Calls the ISampleVisitor's visit method
+    virtual void accept(ISampleVisitor *p_visitor) { p_visitor->visit(this); }
+
+    //! Retrieves the size-distance coupling constant (default 0.0)
     virtual double getKappa() const { return 0.0; }
 };
 
diff --git a/Core/Samples/inc/ISample.h b/Core/Samples/inc/ISample.h
index 0bb6175f800..aaad94a8bc2 100644
--- a/Core/Samples/inc/ISample.h
+++ b/Core/Samples/inc/ISample.h
@@ -37,7 +37,7 @@ class ISample : public IParameterized, public ICloneable
     virtual ISample *clone() const;
 
     //! Calls the ISampleVisitor's visit method
-    virtual void accept(ISampleVisitor *p_visitor) { p_visitor->visit(this); }
+    virtual void accept(ISampleVisitor *p_visitor)=0;
 
     //! Returns an ISimulation if DWBA is required.
     virtual DWBASimulation *createDWBASimulation() const { return 0; }
diff --git a/Core/Samples/inc/LatticeBasis.h b/Core/Samples/inc/LatticeBasis.h
index 5c8ea5406cf..74b959df460 100644
--- a/Core/Samples/inc/LatticeBasis.h
+++ b/Core/Samples/inc/LatticeBasis.h
@@ -29,6 +29,9 @@ class LatticeBasis : public Particle
     virtual ~LatticeBasis();
     virtual LatticeBasis *clone() const;
 
+    //! Calls the ISampleVisitor's visit method
+    virtual void accept(ISampleVisitor *p_visitor) { p_visitor->visit(this); }
+
     void addParticle(const Particle& particle, std::vector<kvector_t > positions);
 
     virtual void setAmbientRefractiveIndex(complex_t refractive_index);
diff --git a/Core/Samples/inc/Layer.h b/Core/Samples/inc/Layer.h
index a2f92dc2170..a78f5ea80ec 100644
--- a/Core/Samples/inc/Layer.h
+++ b/Core/Samples/inc/Layer.h
@@ -47,6 +47,9 @@ class Layer : public ICompositeSample
     virtual Layer *clone() const { return new Layer(*this); }
     //virtual Layer *clone() const { return new Layer(mp_material, m_thickness); }
 
+    //! Calls the ISampleVisitor's visit method
+    virtual void accept(ISampleVisitor *p_visitor) { p_visitor->visit(this); }
+
     //! Sets layer thickness in Angstrom.
     virtual void setThickness(double thickness);
 
diff --git a/Core/Samples/inc/LayerDecorator.h b/Core/Samples/inc/LayerDecorator.h
index 457627723ec..7f7e8445bf6 100644
--- a/Core/Samples/inc/LayerDecorator.h
+++ b/Core/Samples/inc/LayerDecorator.h
@@ -44,6 +44,9 @@ class LayerDecorator : public Layer
     virtual LayerDecorator *clone() const
     { return new LayerDecorator(*this); }
 
+    //! Calls the ISampleVisitor's visit method
+    virtual void accept(ISampleVisitor *p_visitor) { p_visitor->visit(this); }
+
     //! Sets _thickness_ in Angstrom.
     virtual void setThickness(double thickness)
     { mp_decorated_layer->setThickness(thickness); }
diff --git a/Core/Samples/inc/LayerInterface.h b/Core/Samples/inc/LayerInterface.h
index ccbcfa9d99e..54f8953b8d9 100644
--- a/Core/Samples/inc/LayerInterface.h
+++ b/Core/Samples/inc/LayerInterface.h
@@ -28,6 +28,9 @@ class LayerInterface : public ICompositeSample
  public:
     virtual ~LayerInterface();
 
+    //! Calls the ISampleVisitor's visit method
+    virtual void accept(ISampleVisitor *p_visitor) { p_visitor->visit(this); }
+
     //! Creates smooth interface between two layers
     static LayerInterface* createSmoothInterface(
         const Layer *p_layer_top, const Layer *p_layer_bottom);
diff --git a/Core/Samples/inc/LayerRoughness.h b/Core/Samples/inc/LayerRoughness.h
index 5b4b72eda91..090f643c989 100644
--- a/Core/Samples/inc/LayerRoughness.h
+++ b/Core/Samples/inc/LayerRoughness.h
@@ -35,6 +35,9 @@ class LayerRoughness : public IRoughness
 
     LayerRoughness *clone() const;
 
+    //! Calls the ISampleVisitor's visit method
+    virtual void accept(ISampleVisitor *p_visitor) { p_visitor->visit(this); }
+
     //! Returns power spectral density of the surface roughness
     double getSpectralFun(const kvector_t& kvec) const;
 
diff --git a/Core/Samples/inc/MesoCrystal.h b/Core/Samples/inc/MesoCrystal.h
index 1be6e8ab2ff..0d4c4212c74 100644
--- a/Core/Samples/inc/MesoCrystal.h
+++ b/Core/Samples/inc/MesoCrystal.h
@@ -31,6 +31,9 @@ class MesoCrystal : public Particle
     virtual ~MesoCrystal();
     virtual MesoCrystal *clone() const;
 
+    //! Calls the ISampleVisitor's visit method
+    virtual void accept(ISampleVisitor *p_visitor) { p_visitor->visit(this); }
+
     virtual void setAmbientRefractiveIndex(complex_t refractive_index)
     {
         mp_particle_structure->setAmbientRefractiveIndex(refractive_index);
diff --git a/Core/Samples/inc/MultiLayer.h b/Core/Samples/inc/MultiLayer.h
index 9744a37f87f..a35ef86fe2a 100644
--- a/Core/Samples/inc/MultiLayer.h
+++ b/Core/Samples/inc/MultiLayer.h
@@ -41,6 +41,9 @@ class MultiLayer : public ICompositeSample
     MultiLayer();
     ~MultiLayer();
 
+    //! Calls the ISampleVisitor's visit method
+    virtual void accept(ISampleVisitor *p_visitor) { p_visitor->visit(this); }
+
     //! Returns number of layers in multilayer
     inline size_t getNumberOfLayers() const { return m_layers.size(); }
 
@@ -148,11 +151,11 @@ class MultiLayer : public ICompositeSample
     }
 
     //! stack of layers [nlayers]
-    std::vector<Layer *> m_layers;    
+    std::vector<Layer *> m_layers;
     //! coordinate of layer's bottoms [nlayers]
-    std::vector<double > m_layers_z;            
+    std::vector<double > m_layers_z;
     //! stack of layer interfaces [nlayers-1]
-    std::vector<LayerInterface *> m_interfaces; 
+    std::vector<LayerInterface *> m_interfaces;
     //! cross correlation length (in z direction) between different layers
     double m_crossCorrLength;
 };
diff --git a/Core/Samples/inc/Particle.h b/Core/Samples/inc/Particle.h
index 192d3323525..5acaf760540 100644
--- a/Core/Samples/inc/Particle.h
+++ b/Core/Samples/inc/Particle.h
@@ -33,6 +33,9 @@ class Particle : public ICompositeSample
     virtual ~Particle();
     virtual Particle *clone() const;
 
+    //! Calls the ISampleVisitor's visit method
+    virtual void accept(ISampleVisitor *p_visitor) { p_visitor->visit(this); }
+
     //! Sets the refractive index of the ambient material (which influences its scattering power)
     virtual void setAmbientRefractiveIndex(complex_t refractive_index)
     {
diff --git a/Core/Samples/inc/ParticleCoreShell.h b/Core/Samples/inc/ParticleCoreShell.h
index e8d858cc287..cd6e83ba413 100644
--- a/Core/Samples/inc/ParticleCoreShell.h
+++ b/Core/Samples/inc/ParticleCoreShell.h
@@ -27,6 +27,9 @@ class ParticleCoreShell : public Particle
     virtual ~ParticleCoreShell();
     virtual ParticleCoreShell *clone() const;
 
+    //! Calls the ISampleVisitor's visit method
+    virtual void accept(ISampleVisitor *p_visitor) { p_visitor->visit(this); }
+
     //! Sets the refractive index of the ambient material (which influences its scattering power)
     virtual void setAmbientRefractiveIndex(complex_t refractive_index)
     {
diff --git a/Core/Samples/inc/ParticleDecoration.h b/Core/Samples/inc/ParticleDecoration.h
index b1ab55baa24..15f64ffa41f 100644
--- a/Core/Samples/inc/ParticleDecoration.h
+++ b/Core/Samples/inc/ParticleDecoration.h
@@ -47,15 +47,18 @@ class ParticleDecoration : public IDecoration
         setName("ParticleDecoration");
         addParticle(p_particle.clone(), depth, abundance);
     }
-  
+
     ~ParticleDecoration()
     {
         for (size_t i=0; i<m_particles.size(); ++i)
             delete m_particles[i];
     }
-  
+
     virtual ParticleDecoration *clone() const;
 
+    //! Calls the ISampleVisitor's visit method
+    virtual void accept(ISampleVisitor *p_visitor) { p_visitor->visit(this); }
+
     //! Adds generic particle, *-version.
     void addParticle(
         Particle *p_particle, const Geometry::PTransform3D& transform,
diff --git a/Core/Samples/inc/ParticleInfo.h b/Core/Samples/inc/ParticleInfo.h
index 3c7a0bd97ad..02aa0d2e1f1 100644
--- a/Core/Samples/inc/ParticleInfo.h
+++ b/Core/Samples/inc/ParticleInfo.h
@@ -48,6 +48,9 @@ class ParticleInfo : public ICompositeSample
             mp_particle->clone(), mP_transform, m_depth, m_abundance);
     }
 
+    //! Calls the ISampleVisitor's visit method
+    virtual void accept(ISampleVisitor *p_visitor) { p_visitor->visit(this); }
+
     //! Returns particle.
     const Particle *getParticle() const { return mp_particle; }
 
diff --git a/Core/Samples/inc/PositionParticleInfo.h b/Core/Samples/inc/PositionParticleInfo.h
index eaf7fe2de34..f29da1f813b 100644
--- a/Core/Samples/inc/PositionParticleInfo.h
+++ b/Core/Samples/inc/PositionParticleInfo.h
@@ -44,6 +44,9 @@ class PositionParticleInfo : public ParticleInfo
 
     virtual PositionParticleInfo *clone() const;
 
+    //! Calls the ISampleVisitor's visit method
+    virtual void accept(ISampleVisitor *p_visitor) { p_visitor->visit(this); }
+
     //! Returns particle.
     const Particle *getParticle() const { return mp_particle; }
 
-- 
GitLab