diff --git a/Core/FormFactors/inc/IFormFactor.h b/Core/FormFactors/inc/IFormFactor.h index 9da77c378f2826894774266a52881d342158591e..1215c5b84ac21858f321c901d133dbc3d6226934 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 4890e016f04440b09f83d78f9698eb66b101d2fe..8cc184da8f9ca90bb87d61128ecc82e08d8e71d0 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 9e18b0c890d8a2000179e203a606fa825c0821a2..b39d74fab174b5137ead015508c2fa255680289e 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 28baff8ac8e4112d13049189b873e922cf56b8d1..2c7dd3992a064092d81a0f80cd485aaefd273d1c 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 0bb6175f800fb2843a19643b91cd9c5349a1312a..aaad94a8bc2662af609ad1e55ff30ebd9c6de5fc 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 5c8ea5406cfb6b06667a20ca3aaaf08ff41d3fc1..74b959df460a3786b6652bd31fa0affc5a939ac8 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 a2f92dc2170a875d5092e1e7e5dd2ff4544239cd..a78f5ea80ec96c5f72d9edcf6dc5edcbeeb6eec3 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 457627723ecdcce635a046f27327f3c33cb614b3..7f7e8445bf657a4798621eb0271fd50e2c59cf0b 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 ccbcfa9d99e35441c10388d3581427d1ddd12167..54f8953b8d9dcb88e4bee8cd11aa9d31d3d0b67e 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 5b4b72eda910f13fd8e2f2955699bf88a16c93c2..090f643c989fdcbcfb886437494e2ba10678ea09 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 1be6e8ab2ffca3a672e38cb0089b07887659d619..0d4c4212c741de9145ad910390794ad4080c2fe9 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 9744a37f87f7a5a2410abaaf42a18e58a6f12697..a35ef86fe2a217779144d9461ac8852ea5a0ffc6 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 192d3323525881129ddacee688cba28213dc43a9..5acaf760540776f7cc5bd9d57efa9b83e8495298 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 e8d858cc287de23acb7de758a47f0978eea6d1e5..cd6e83ba413d871f713913486342cd256a741e4c 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 b1ab55baa246a3c84200fbf50d97ac4a3161129d..15f64ffa41f5d99428688817d397961fe87cc129 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 3c7a0bd97ad8534642c1118de1b1d65f4659f62d..02aa0d2e1f14fb4b1cf3c15f66688dcf16afbdda 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 eaf7fe2de34ad783ab3f3495f5ca9c87cb559778..f29da1f813b8de73192fcd541a04f250fac37765 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; }