From 6d71ac3aba500787dc247d6060b893758e2e1da9 Mon Sep 17 00:00:00 2001 From: Gennady Pospelov <g.pospelov@fz-juelich.de> Date: Mon, 2 Dec 2013 18:12:10 +0100 Subject: [PATCH] Cleanup in ISampleVisitor, new global function VisitSampleTree --- App/src/TestMiscellaneous.cpp | 17 +- Core/PythonAPI/src/FormFactorSphere.pypp.cpp | 24 ++ .../FormFactorSphereGaussianRadius.pypp.cpp | 24 ++ Core/PythonAPI/src/IFormFactor.pypp.cpp | 24 ++ Core/PythonAPI/src/IFormFactorBorn.pypp.cpp | 24 ++ .../src/IFormFactorDecorator.pypp.cpp | 24 ++ .../src/IInterferenceFunction.pypp.cpp | 24 ++ Core/PythonAPI/src/ISample.pypp.cpp | 24 ++ ...InterferenceFunction1DParaCrystal.pypp.cpp | 24 ++ .../InterferenceFunction2DLattice.pypp.cpp | 24 ++ ...InterferenceFunction2DParaCrystal.pypp.cpp | 24 ++ .../src/InterferenceFunctionNone.pypp.cpp | 24 ++ Core/PythonAPI/src/LayerRoughness.pypp.cpp | 24 ++ Core/Samples/inc/ISample.h | 2 +- Core/Samples/inc/ISampleHierarchicalVisitor.h | 191 --------- Core/Samples/inc/ISampleVisitor.h | 244 +++++++---- Core/Samples/src/ISample.cpp | 3 +- .../src/ISampleHierarchicalVisitor.cpp | 292 ------------- Core/Samples/src/ISampleVisitor.cpp | 373 +++++++++++++++++ Core/Tools/inc/SampleMaterialVisitor.h | 102 +++-- Core/Tools/inc/SamplePrintVisitor.h | 132 +++--- Core/Tools/src/SampleMaterialVisitor.cpp | 392 ++++++++++++------ Core/Tools/src/SamplePrintVisitor.cpp | 365 +++++++++++++++- 23 files changed, 1608 insertions(+), 793 deletions(-) delete mode 100644 Core/Samples/inc/ISampleHierarchicalVisitor.h delete mode 100644 Core/Samples/src/ISampleHierarchicalVisitor.cpp create mode 100644 Core/Samples/src/ISampleVisitor.cpp diff --git a/App/src/TestMiscellaneous.cpp b/App/src/TestMiscellaneous.cpp index 051fd6b5340..1ee9a8fd993 100644 --- a/App/src/TestMiscellaneous.cpp +++ b/App/src/TestMiscellaneous.cpp @@ -13,8 +13,6 @@ // // ************************************************************************** // -#include "ISampleHierarchicalVisitor.h" - #include "TestMiscellaneous.h" #include "SampleFactory.h" #include "OutputData.h" @@ -53,8 +51,8 @@ TestMiscellaneous::TestMiscellaneous() void TestMiscellaneous::execute() { - test_HierarchicalVisitor(); - //test_PrintVisitor(); + //test_HierarchicalVisitor(); + test_PrintVisitor(); //test_LogSystem(); //test_OutputDataTo2DArray(); //test_KVectorContainer(); @@ -72,13 +70,7 @@ void TestMiscellaneous::execute() /* ************************************************************************* */ void TestMiscellaneous::test_HierarchicalVisitor() { - std::cout << "TestMiscellaneous::test_PrintVisitor() ->" << std::endl; - SampleBuilderFactory factory; - ISample *sample = factory.createSample("isgisaxs04_2DDL"); - //std::cout << (*sample) << std::endl; - SamplePrintVisitor visitor; - sample->accept(&visitor); } @@ -91,9 +83,10 @@ void TestMiscellaneous::test_PrintVisitor() SampleBuilderFactory factory; ISample *sample = factory.createSample("isgisaxs04_2DDL"); //std::cout << (*sample) << std::endl; + sample->printSampleTree(); - SamplePrintVisitor visitor; - sample->accept(&visitor); + //SamplePrintVisitor visitor; + //sample->accept(&visitor); } diff --git a/Core/PythonAPI/src/FormFactorSphere.pypp.cpp b/Core/PythonAPI/src/FormFactorSphere.pypp.cpp index b2b8893a00b..d41eaa292be 100644 --- a/Core/PythonAPI/src/FormFactorSphere.pypp.cpp +++ b/Core/PythonAPI/src/FormFactorSphere.pypp.cpp @@ -133,6 +133,18 @@ struct FormFactorSphere_wrapper : FormFactorSphere, bp::wrapper< FormFactorSpher return IFormFactorBorn::evaluate( boost::ref(k_i), boost::ref(k_f_bin), alpha_f_bin ); } + virtual ::ICompositeSample * getCompositeSample( ) { + if( bp::override func_getCompositeSample = this->get_override( "getCompositeSample" ) ) + return func_getCompositeSample( ); + else + return this->ISample::getCompositeSample( ); + } + + + ::ICompositeSample * default_getCompositeSample( ) { + return ISample::getCompositeSample( ); + } + virtual ::ICompositeSample const * getCompositeSample( ) const { if( bp::override func_getCompositeSample = this->get_override( "getCompositeSample" ) ) return func_getCompositeSample( ); @@ -372,6 +384,18 @@ void register_FormFactorSphere_class(){ , default_evaluate_function_type(&FormFactorSphere_wrapper::default_evaluate) , ( bp::arg("k_i"), bp::arg("k_f_bin"), bp::arg("alpha_f_bin") ) ); + } + { //::ISample::getCompositeSample + + typedef ::ICompositeSample * ( ::ISample::*getCompositeSample_function_type )( ) ; + typedef ::ICompositeSample * ( FormFactorSphere_wrapper::*default_getCompositeSample_function_type )( ) ; + + FormFactorSphere_exposer.def( + "getCompositeSample" + , getCompositeSample_function_type(&::ISample::getCompositeSample) + , default_getCompositeSample_function_type(&FormFactorSphere_wrapper::default_getCompositeSample) + , bp::return_value_policy< bp::reference_existing_object >() ); + } { //::ISample::getCompositeSample diff --git a/Core/PythonAPI/src/FormFactorSphereGaussianRadius.pypp.cpp b/Core/PythonAPI/src/FormFactorSphereGaussianRadius.pypp.cpp index e3edc65106a..6ab25a9af69 100644 --- a/Core/PythonAPI/src/FormFactorSphereGaussianRadius.pypp.cpp +++ b/Core/PythonAPI/src/FormFactorSphereGaussianRadius.pypp.cpp @@ -157,6 +157,18 @@ struct FormFactorSphereGaussianRadius_wrapper : FormFactorSphereGaussianRadius, return IFormFactorBorn::evaluate( boost::ref(k_i), boost::ref(k_f_bin), alpha_f_bin ); } + virtual ::ICompositeSample * getCompositeSample( ) { + if( bp::override func_getCompositeSample = this->get_override( "getCompositeSample" ) ) + return func_getCompositeSample( ); + else + return this->ISample::getCompositeSample( ); + } + + + ::ICompositeSample * default_getCompositeSample( ) { + return ISample::getCompositeSample( ); + } + virtual ::ICompositeSample const * getCompositeSample( ) const { if( bp::override func_getCompositeSample = this->get_override( "getCompositeSample" ) ) return func_getCompositeSample( ); @@ -407,6 +419,18 @@ void register_FormFactorSphereGaussianRadius_class(){ , default_evaluate_function_type(&FormFactorSphereGaussianRadius_wrapper::default_evaluate) , ( bp::arg("k_i"), bp::arg("k_f_bin"), bp::arg("alpha_f_bin") ) ); + } + { //::ISample::getCompositeSample + + typedef ::ICompositeSample * ( ::ISample::*getCompositeSample_function_type )( ) ; + typedef ::ICompositeSample * ( FormFactorSphereGaussianRadius_wrapper::*default_getCompositeSample_function_type )( ) ; + + FormFactorSphereGaussianRadius_exposer.def( + "getCompositeSample" + , getCompositeSample_function_type(&::ISample::getCompositeSample) + , default_getCompositeSample_function_type(&FormFactorSphereGaussianRadius_wrapper::default_getCompositeSample) + , bp::return_value_policy< bp::reference_existing_object >() ); + } { //::ISample::getCompositeSample diff --git a/Core/PythonAPI/src/IFormFactor.pypp.cpp b/Core/PythonAPI/src/IFormFactor.pypp.cpp index 47eb2f5e967..df761af3a1b 100644 --- a/Core/PythonAPI/src/IFormFactor.pypp.cpp +++ b/Core/PythonAPI/src/IFormFactor.pypp.cpp @@ -155,6 +155,18 @@ struct IFormFactor_wrapper : IFormFactor, bp::wrapper< IFormFactor > { return IParameterized::createParameterTree( ); } + virtual ::ICompositeSample * getCompositeSample( ) { + if( bp::override func_getCompositeSample = this->get_override( "getCompositeSample" ) ) + return func_getCompositeSample( ); + else + return this->ISample::getCompositeSample( ); + } + + + ::ICompositeSample * default_getCompositeSample( ) { + return ISample::getCompositeSample( ); + } + virtual ::ICompositeSample const * getCompositeSample( ) const { if( bp::override func_getCompositeSample = this->get_override( "getCompositeSample" ) ) return func_getCompositeSample( ); @@ -387,6 +399,18 @@ void register_IFormFactor_class(){ , default_createParameterTree_function_type(&IFormFactor_wrapper::default_createParameterTree) , bp::return_value_policy< bp::manage_new_object >() ); + } + { //::ISample::getCompositeSample + + typedef ::ICompositeSample * ( ::ISample::*getCompositeSample_function_type )( ) ; + typedef ::ICompositeSample * ( IFormFactor_wrapper::*default_getCompositeSample_function_type )( ) ; + + IFormFactor_exposer.def( + "getCompositeSample" + , getCompositeSample_function_type(&::ISample::getCompositeSample) + , default_getCompositeSample_function_type(&IFormFactor_wrapper::default_getCompositeSample) + , bp::return_value_policy< bp::reference_existing_object >() ); + } { //::ISample::getCompositeSample diff --git a/Core/PythonAPI/src/IFormFactorBorn.pypp.cpp b/Core/PythonAPI/src/IFormFactorBorn.pypp.cpp index fc3c5fce9ad..5fed4b7e730 100644 --- a/Core/PythonAPI/src/IFormFactorBorn.pypp.cpp +++ b/Core/PythonAPI/src/IFormFactorBorn.pypp.cpp @@ -119,6 +119,18 @@ struct IFormFactorBorn_wrapper : IFormFactorBorn, bp::wrapper< IFormFactorBorn > return IParameterized::createParameterTree( ); } + virtual ::ICompositeSample * getCompositeSample( ) { + if( bp::override func_getCompositeSample = this->get_override( "getCompositeSample" ) ) + return func_getCompositeSample( ); + else + return this->ISample::getCompositeSample( ); + } + + + ::ICompositeSample * default_getCompositeSample( ) { + return ISample::getCompositeSample( ); + } + virtual ::ICompositeSample const * getCompositeSample( ) const { if( bp::override func_getCompositeSample = this->get_override( "getCompositeSample" ) ) return func_getCompositeSample( ); @@ -367,6 +379,18 @@ void register_IFormFactorBorn_class(){ , default_createParameterTree_function_type(&IFormFactorBorn_wrapper::default_createParameterTree) , bp::return_value_policy< bp::manage_new_object >() ); + } + { //::ISample::getCompositeSample + + typedef ::ICompositeSample * ( ::ISample::*getCompositeSample_function_type )( ) ; + typedef ::ICompositeSample * ( IFormFactorBorn_wrapper::*default_getCompositeSample_function_type )( ) ; + + IFormFactorBorn_exposer.def( + "getCompositeSample" + , getCompositeSample_function_type(&::ISample::getCompositeSample) + , default_getCompositeSample_function_type(&IFormFactorBorn_wrapper::default_getCompositeSample) + , bp::return_value_policy< bp::reference_existing_object >() ); + } { //::ISample::getCompositeSample diff --git a/Core/PythonAPI/src/IFormFactorDecorator.pypp.cpp b/Core/PythonAPI/src/IFormFactorDecorator.pypp.cpp index 29b0fd2305d..d246cd2dfe7 100644 --- a/Core/PythonAPI/src/IFormFactorDecorator.pypp.cpp +++ b/Core/PythonAPI/src/IFormFactorDecorator.pypp.cpp @@ -124,6 +124,18 @@ struct IFormFactorDecorator_wrapper : IFormFactorDecorator, bp::wrapper< IFormFa return func_evaluate( boost::ref(k_i), boost::ref(k_f_bin), alpha_f_bin ); } + virtual ::ICompositeSample * getCompositeSample( ) { + if( bp::override func_getCompositeSample = this->get_override( "getCompositeSample" ) ) + return func_getCompositeSample( ); + else + return this->ISample::getCompositeSample( ); + } + + + ::ICompositeSample * default_getCompositeSample( ) { + return ISample::getCompositeSample( ); + } + virtual ::ICompositeSample const * getCompositeSample( ) const { if( bp::override func_getCompositeSample = this->get_override( "getCompositeSample" ) ) return func_getCompositeSample( ); @@ -358,6 +370,18 @@ void register_IFormFactorDecorator_class(){ , bp::pure_virtual( evaluate_function_type(&::IFormFactor::evaluate) ) , ( bp::arg("k_i"), bp::arg("k_f_bin"), bp::arg("alpha_f_bin") ) ); + } + { //::ISample::getCompositeSample + + typedef ::ICompositeSample * ( ::ISample::*getCompositeSample_function_type )( ) ; + typedef ::ICompositeSample * ( IFormFactorDecorator_wrapper::*default_getCompositeSample_function_type )( ) ; + + IFormFactorDecorator_exposer.def( + "getCompositeSample" + , getCompositeSample_function_type(&::ISample::getCompositeSample) + , default_getCompositeSample_function_type(&IFormFactorDecorator_wrapper::default_getCompositeSample) + , bp::return_value_policy< bp::reference_existing_object >() ); + } { //::ISample::getCompositeSample diff --git a/Core/PythonAPI/src/IInterferenceFunction.pypp.cpp b/Core/PythonAPI/src/IInterferenceFunction.pypp.cpp index 629e437f138..ba56255a3be 100644 --- a/Core/PythonAPI/src/IInterferenceFunction.pypp.cpp +++ b/Core/PythonAPI/src/IInterferenceFunction.pypp.cpp @@ -95,6 +95,18 @@ struct IInterferenceFunction_wrapper : IInterferenceFunction, bp::wrapper< IInte return IParameterized::createParameterTree( ); } + virtual ::ICompositeSample * getCompositeSample( ) { + if( bp::override func_getCompositeSample = this->get_override( "getCompositeSample" ) ) + return func_getCompositeSample( ); + else + return this->ISample::getCompositeSample( ); + } + + + ::ICompositeSample * default_getCompositeSample( ) { + return ISample::getCompositeSample( ); + } + virtual ::ICompositeSample const * getCompositeSample( ) const { if( bp::override func_getCompositeSample = this->get_override( "getCompositeSample" ) ) return func_getCompositeSample( ); @@ -270,6 +282,18 @@ void register_IInterferenceFunction_class(){ , default_createParameterTree_function_type(&IInterferenceFunction_wrapper::default_createParameterTree) , bp::return_value_policy< bp::manage_new_object >() ); + } + { //::ISample::getCompositeSample + + typedef ::ICompositeSample * ( ::ISample::*getCompositeSample_function_type )( ) ; + typedef ::ICompositeSample * ( IInterferenceFunction_wrapper::*default_getCompositeSample_function_type )( ) ; + + IInterferenceFunction_exposer.def( + "getCompositeSample" + , getCompositeSample_function_type(&::ISample::getCompositeSample) + , default_getCompositeSample_function_type(&IInterferenceFunction_wrapper::default_getCompositeSample) + , bp::return_value_policy< bp::reference_existing_object >() ); + } { //::ISample::getCompositeSample diff --git a/Core/PythonAPI/src/ISample.pypp.cpp b/Core/PythonAPI/src/ISample.pypp.cpp index d6893b23933..97e4c9ca72e 100644 --- a/Core/PythonAPI/src/ISample.pypp.cpp +++ b/Core/PythonAPI/src/ISample.pypp.cpp @@ -54,6 +54,18 @@ struct ISample_wrapper : ISample, bp::wrapper< ISample > { return ISample::cloneInvertB( ); } + virtual ::ICompositeSample * getCompositeSample( ) { + if( bp::override func_getCompositeSample = this->get_override( "getCompositeSample" ) ) + return func_getCompositeSample( ); + else + return this->ISample::getCompositeSample( ); + } + + + ::ICompositeSample * default_getCompositeSample( ) { + return ISample::getCompositeSample( ); + } + virtual ::ICompositeSample const * getCompositeSample( ) const { if( bp::override func_getCompositeSample = this->get_override( "getCompositeSample" ) ) return func_getCompositeSample( ); @@ -231,6 +243,18 @@ void register_ISample_class(){ "containsMagneticMaterial" , containsMagneticMaterial_function_type( &::ISample::containsMagneticMaterial ) ); + } + { //::ISample::getCompositeSample + + typedef ::ICompositeSample * ( ::ISample::*getCompositeSample_function_type )( ) ; + typedef ::ICompositeSample * ( ISample_wrapper::*default_getCompositeSample_function_type )( ) ; + + ISample_exposer.def( + "getCompositeSample" + , getCompositeSample_function_type(&::ISample::getCompositeSample) + , default_getCompositeSample_function_type(&ISample_wrapper::default_getCompositeSample) + , bp::return_value_policy< bp::reference_existing_object >() ); + } { //::ISample::getCompositeSample diff --git a/Core/PythonAPI/src/InterferenceFunction1DParaCrystal.pypp.cpp b/Core/PythonAPI/src/InterferenceFunction1DParaCrystal.pypp.cpp index 6db34fb10b2..ebd2821b1e3 100644 --- a/Core/PythonAPI/src/InterferenceFunction1DParaCrystal.pypp.cpp +++ b/Core/PythonAPI/src/InterferenceFunction1DParaCrystal.pypp.cpp @@ -109,6 +109,18 @@ struct InterferenceFunction1DParaCrystal_wrapper : InterferenceFunction1DParaCry return IParameterized::createParameterTree( ); } + virtual ::ICompositeSample * getCompositeSample( ) { + if( bp::override func_getCompositeSample = this->get_override( "getCompositeSample" ) ) + return func_getCompositeSample( ); + else + return this->ISample::getCompositeSample( ); + } + + + ::ICompositeSample * default_getCompositeSample( ) { + return ISample::getCompositeSample( ); + } + virtual ::ICompositeSample const * getCompositeSample( ) const { if( bp::override func_getCompositeSample = this->get_override( "getCompositeSample" ) ) return func_getCompositeSample( ); @@ -308,6 +320,18 @@ void register_InterferenceFunction1DParaCrystal_class(){ , default_createParameterTree_function_type(&InterferenceFunction1DParaCrystal_wrapper::default_createParameterTree) , bp::return_value_policy< bp::manage_new_object >() ); + } + { //::ISample::getCompositeSample + + typedef ::ICompositeSample * ( ::ISample::*getCompositeSample_function_type )( ) ; + typedef ::ICompositeSample * ( InterferenceFunction1DParaCrystal_wrapper::*default_getCompositeSample_function_type )( ) ; + + InterferenceFunction1DParaCrystal_exposer.def( + "getCompositeSample" + , getCompositeSample_function_type(&::ISample::getCompositeSample) + , default_getCompositeSample_function_type(&InterferenceFunction1DParaCrystal_wrapper::default_getCompositeSample) + , bp::return_value_policy< bp::reference_existing_object >() ); + } { //::ISample::getCompositeSample diff --git a/Core/PythonAPI/src/InterferenceFunction2DLattice.pypp.cpp b/Core/PythonAPI/src/InterferenceFunction2DLattice.pypp.cpp index bb22c253926..04f87d097da 100644 --- a/Core/PythonAPI/src/InterferenceFunction2DLattice.pypp.cpp +++ b/Core/PythonAPI/src/InterferenceFunction2DLattice.pypp.cpp @@ -97,6 +97,18 @@ struct InterferenceFunction2DLattice_wrapper : InterferenceFunction2DLattice, bp return IParameterized::createParameterTree( ); } + virtual ::ICompositeSample * getCompositeSample( ) { + if( bp::override func_getCompositeSample = this->get_override( "getCompositeSample" ) ) + return func_getCompositeSample( ); + else + return this->ISample::getCompositeSample( ); + } + + + ::ICompositeSample * default_getCompositeSample( ) { + return ISample::getCompositeSample( ); + } + virtual ::ICompositeSample const * getCompositeSample( ) const { if( bp::override func_getCompositeSample = this->get_override( "getCompositeSample" ) ) return func_getCompositeSample( ); @@ -287,6 +299,18 @@ void register_InterferenceFunction2DLattice_class(){ , default_createParameterTree_function_type(&InterferenceFunction2DLattice_wrapper::default_createParameterTree) , bp::return_value_policy< bp::manage_new_object >() ); + } + { //::ISample::getCompositeSample + + typedef ::ICompositeSample * ( ::ISample::*getCompositeSample_function_type )( ) ; + typedef ::ICompositeSample * ( InterferenceFunction2DLattice_wrapper::*default_getCompositeSample_function_type )( ) ; + + InterferenceFunction2DLattice_exposer.def( + "getCompositeSample" + , getCompositeSample_function_type(&::ISample::getCompositeSample) + , default_getCompositeSample_function_type(&InterferenceFunction2DLattice_wrapper::default_getCompositeSample) + , bp::return_value_policy< bp::reference_existing_object >() ); + } { //::ISample::getCompositeSample diff --git a/Core/PythonAPI/src/InterferenceFunction2DParaCrystal.pypp.cpp b/Core/PythonAPI/src/InterferenceFunction2DParaCrystal.pypp.cpp index 00e15bd8f14..1d4cd0a4efd 100644 --- a/Core/PythonAPI/src/InterferenceFunction2DParaCrystal.pypp.cpp +++ b/Core/PythonAPI/src/InterferenceFunction2DParaCrystal.pypp.cpp @@ -97,6 +97,18 @@ struct InterferenceFunction2DParaCrystal_wrapper : InterferenceFunction2DParaCry return IParameterized::createParameterTree( ); } + virtual ::ICompositeSample * getCompositeSample( ) { + if( bp::override func_getCompositeSample = this->get_override( "getCompositeSample" ) ) + return func_getCompositeSample( ); + else + return this->ISample::getCompositeSample( ); + } + + + ::ICompositeSample * default_getCompositeSample( ) { + return ISample::getCompositeSample( ); + } + virtual ::ICompositeSample const * getCompositeSample( ) const { if( bp::override func_getCompositeSample = this->get_override( "getCompositeSample" ) ) return func_getCompositeSample( ); @@ -329,6 +341,18 @@ void register_InterferenceFunction2DParaCrystal_class(){ , default_createParameterTree_function_type(&InterferenceFunction2DParaCrystal_wrapper::default_createParameterTree) , bp::return_value_policy< bp::manage_new_object >() ); + } + { //::ISample::getCompositeSample + + typedef ::ICompositeSample * ( ::ISample::*getCompositeSample_function_type )( ) ; + typedef ::ICompositeSample * ( InterferenceFunction2DParaCrystal_wrapper::*default_getCompositeSample_function_type )( ) ; + + InterferenceFunction2DParaCrystal_exposer.def( + "getCompositeSample" + , getCompositeSample_function_type(&::ISample::getCompositeSample) + , default_getCompositeSample_function_type(&InterferenceFunction2DParaCrystal_wrapper::default_getCompositeSample) + , bp::return_value_policy< bp::reference_existing_object >() ); + } { //::ISample::getCompositeSample diff --git a/Core/PythonAPI/src/InterferenceFunctionNone.pypp.cpp b/Core/PythonAPI/src/InterferenceFunctionNone.pypp.cpp index eca6fc43a2f..eb15298f104 100644 --- a/Core/PythonAPI/src/InterferenceFunctionNone.pypp.cpp +++ b/Core/PythonAPI/src/InterferenceFunctionNone.pypp.cpp @@ -97,6 +97,18 @@ struct InterferenceFunctionNone_wrapper : InterferenceFunctionNone, bp::wrapper< return IParameterized::createParameterTree( ); } + virtual ::ICompositeSample * getCompositeSample( ) { + if( bp::override func_getCompositeSample = this->get_override( "getCompositeSample" ) ) + return func_getCompositeSample( ); + else + return this->ISample::getCompositeSample( ); + } + + + ::ICompositeSample * default_getCompositeSample( ) { + return ISample::getCompositeSample( ); + } + virtual ::ICompositeSample const * getCompositeSample( ) const { if( bp::override func_getCompositeSample = this->get_override( "getCompositeSample" ) ) return func_getCompositeSample( ); @@ -277,6 +289,18 @@ void register_InterferenceFunctionNone_class(){ , default_createParameterTree_function_type(&InterferenceFunctionNone_wrapper::default_createParameterTree) , bp::return_value_policy< bp::manage_new_object >() ); + } + { //::ISample::getCompositeSample + + typedef ::ICompositeSample * ( ::ISample::*getCompositeSample_function_type )( ) ; + typedef ::ICompositeSample * ( InterferenceFunctionNone_wrapper::*default_getCompositeSample_function_type )( ) ; + + InterferenceFunctionNone_exposer.def( + "getCompositeSample" + , getCompositeSample_function_type(&::ISample::getCompositeSample) + , default_getCompositeSample_function_type(&InterferenceFunctionNone_wrapper::default_getCompositeSample) + , bp::return_value_policy< bp::reference_existing_object >() ); + } { //::ISample::getCompositeSample diff --git a/Core/PythonAPI/src/LayerRoughness.pypp.cpp b/Core/PythonAPI/src/LayerRoughness.pypp.cpp index b0d3ae5398c..7449d6966b7 100644 --- a/Core/PythonAPI/src/LayerRoughness.pypp.cpp +++ b/Core/PythonAPI/src/LayerRoughness.pypp.cpp @@ -92,6 +92,18 @@ struct LayerRoughness_wrapper : LayerRoughness, bp::wrapper< LayerRoughness > { return IParameterized::createParameterTree( ); } + virtual ::ICompositeSample * getCompositeSample( ) { + if( bp::override func_getCompositeSample = this->get_override( "getCompositeSample" ) ) + return func_getCompositeSample( ); + else + return this->ISample::getCompositeSample( ); + } + + + ::ICompositeSample * default_getCompositeSample( ) { + return ISample::getCompositeSample( ); + } + virtual ::ICompositeSample const * getCompositeSample( ) const { if( bp::override func_getCompositeSample = this->get_override( "getCompositeSample" ) ) return func_getCompositeSample( ); @@ -326,6 +338,18 @@ void register_LayerRoughness_class(){ , default_createParameterTree_function_type(&LayerRoughness_wrapper::default_createParameterTree) , bp::return_value_policy< bp::manage_new_object >() ); + } + { //::ISample::getCompositeSample + + typedef ::ICompositeSample * ( ::ISample::*getCompositeSample_function_type )( ) ; + typedef ::ICompositeSample * ( LayerRoughness_wrapper::*default_getCompositeSample_function_type )( ) ; + + LayerRoughness_exposer.def( + "getCompositeSample" + , getCompositeSample_function_type(&::ISample::getCompositeSample) + , default_getCompositeSample_function_type(&LayerRoughness_wrapper::default_getCompositeSample) + , bp::return_value_policy< bp::reference_existing_object >() ); + } { //::ISample::getCompositeSample diff --git a/Core/Samples/inc/ISample.h b/Core/Samples/inc/ISample.h index 2c6be217469..3d05172729d 100644 --- a/Core/Samples/inc/ISample.h +++ b/Core/Samples/inc/ISample.h @@ -19,7 +19,6 @@ #include "IParameterized.h" #include "ICloneable.h" #include "ISampleVisitor.h" -#include "ISampleHierarchicalVisitor.h" class ICompositeSample; class DWBASimulation; @@ -33,6 +32,7 @@ public: virtual ~ISample() {} //! Returns pointer to "this", if it is composite sample (to overload). + virtual ICompositeSample *getCompositeSample() { return 0; } virtual const ICompositeSample *getCompositeSample() const { return 0; } virtual ISample *clone() const; diff --git a/Core/Samples/inc/ISampleHierarchicalVisitor.h b/Core/Samples/inc/ISampleHierarchicalVisitor.h deleted file mode 100644 index 852a34c4113..00000000000 --- a/Core/Samples/inc/ISampleHierarchicalVisitor.h +++ /dev/null @@ -1,191 +0,0 @@ -// ************************************************************************** // -// -// BornAgain: simulate and fit scattering at grazing incidence -// -//! @file Samples/inc/ISampleHierarchicalVisitor.h -//! @brief Defines interface class ISampleHierarchicalVisitor. -//! -//! @homepage http://apps.jcns.fz-juelich.de/BornAgain -//! @license GNU General Public License v3 or higher (see COPYING) -//! @copyright Forschungszentrum Jülich GmbH 2013 -//! @authors Scientific Computing Group at MLZ Garching -//! @authors C. Durniak, G. Pospelov, W. Van Herck, J. Wuttke -// -// ************************************************************************** // - -#ifndef ISAMPLEHIERARCHICALVISITOR_H -#define ISAMPLEHIERARCHICALVISITOR_H - -#include "Exceptions.h" - -class ISample; -// - the order according to the hierarchy as reported by IDE -class ICompositeSample; -// - -class IClusteredParticles; -class Crystal; -// - -class IDecoration; -class ParticleDecoration; -// - -class Layer; -// - -class LayerInterface; -// - -class MultiLayer; -// - -class Particle; -class LatticeBasis; -class MesoCrystal; -class ParticleCoreShell; -// - -class ParticleInfo; -class DiffuseParticleInfo; -class PositionParticleInfo; -// - -class IFormFactor; -// - -class FormFactorDWBAPol; -class FormFactorDWBAPolConstZ; -// - -class FormFactorWeighted; -// - -class IFormFactorBorn; -// - -class FormFactorBox; -class FormFactorCone; -class FormFactorCrystal; -class FormFactorCylinder; -class FormFactorEllipsoid; -class FormFactorFullSphere; -class FormFactorFullSpheroid; -class FormFactorGauss; -class FormFactorHemiSpheroid; -class FormFactorLorentz; -class FormFactorParallelepiped; -class FormFactorPrism3; -class FormFactorPrism6; -class FormFactorPyramid; -class FormFactorSphere; -class FormFactorSphereGaussianRadius; -class FormFactorTetrahedron; -class IFormFactorBornSeparable; -// - -class IFormFactorDecorator; -// - -class FormFactorDWBA; -class FormFactorDWBAConstZ; -class FormFactorDecoratorDebyeWaller; -class FormFactorDecoratorFactor; -class FormFactorDecoratorMaterial; -class FormFactorDecoratorMultiPositionFactor; -class FormFactorDecoratorPositionFactor; -class FormFactorDecoratorTransformation; -// - -class IInterferenceFunction; -class InterferenceFunction1DParaCrystal; -class InterferenceFunction2DLattice; -class InterferenceFunction2DParaCrystal; -class InterferenceFunctionNone; -// - -class IRoughness; -class LayerRoughness; - - -class BA_CORE_API_ ISampleHierarchicalVisitor -{ -public: - ISampleHierarchicalVisitor() : m_nlevel(0) {} - virtual ~ISampleHierarchicalVisitor(){} - - // visiting methods (the order according to the hierarchy as reported by IDE) - - virtual bool visit(const ISample *); - - virtual bool visit(const ICompositeSample *); - - virtual bool visit(const IClusteredParticles *); - virtual bool visit(const Crystal *); - - virtual bool visit(const IDecoration *); - virtual bool visit(const ParticleDecoration *); - - virtual bool visit(const Layer *); - - virtual bool visit(const LayerInterface *); - - virtual bool visit(const MultiLayer *); - - virtual bool visit(const Particle *); - virtual bool visit(const LatticeBasis *); - virtual bool visit(const MesoCrystal *); - virtual bool visit(const ParticleCoreShell *); - - virtual bool visit(const ParticleInfo *); - virtual bool visit(const DiffuseParticleInfo *); - virtual bool visit(const PositionParticleInfo *); - - virtual bool visit(const IFormFactor *); - - virtual bool visit(const FormFactorDWBAPol *); - virtual bool visit(const FormFactorDWBAPolConstZ *); - - virtual bool visit(const FormFactorWeighted *); - - virtual bool visit(const IFormFactorBorn *); - - virtual bool visit(const FormFactorBox *); - virtual bool visit(const FormFactorCone *); - virtual bool visit(const FormFactorCrystal *); - virtual bool visit(const FormFactorCylinder *); - virtual bool visit(const FormFactorEllipsoid *); - virtual bool visit(const FormFactorFullSphere *); - virtual bool visit(const FormFactorFullSpheroid *); - virtual bool visit(const FormFactorGauss *); - virtual bool visit(const FormFactorHemiSpheroid *); - virtual bool visit(const FormFactorLorentz *); - virtual bool visit(const FormFactorParallelepiped *); - virtual bool visit(const FormFactorPrism3 *); - virtual bool visit(const FormFactorPrism6 *); - virtual bool visit(const FormFactorPyramid *); - virtual bool visit(const FormFactorSphere *); - virtual bool visit(const FormFactorSphereGaussianRadius *); - virtual bool visit(const FormFactorTetrahedron *); - virtual bool visit(const IFormFactorBornSeparable *); - - virtual bool visit(const IFormFactorDecorator *); - - virtual bool visit(const FormFactorDWBA *); - virtual bool visit(const FormFactorDWBAConstZ *); - virtual bool visit(const FormFactorDecoratorDebyeWaller *); - virtual bool visit(const FormFactorDecoratorFactor *); - virtual bool visit(const FormFactorDecoratorMaterial *); - virtual bool visit(const FormFactorDecoratorMultiPositionFactor *); - virtual bool visit(const FormFactorDecoratorPositionFactor *); - virtual bool visit(const FormFactorDecoratorTransformation *); - - virtual bool visit(const IInterferenceFunction *); - virtual bool visit(const InterferenceFunction1DParaCrystal *); - virtual bool visit(const InterferenceFunction2DLattice *); - virtual bool visit(const InterferenceFunction2DParaCrystal *); - virtual bool visit(const InterferenceFunctionNone *); - - virtual bool visit(const IRoughness *); - virtual bool visit(const LayerRoughness *); - - - // enter and leave methods - bool visitEnter(const ICompositeSample *); - bool visitLeave(const ICompositeSample *); - - //! return current level of the visitor - int getLevel() const { return m_nlevel; } - -protected: - int m_nlevel; -}; - - - -#endif // ISAMPLEHIERARCHICALVISITOR_H - diff --git a/Core/Samples/inc/ISampleVisitor.h b/Core/Samples/inc/ISampleVisitor.h index 16aa7dac7a9..18c96c6ed33 100644 --- a/Core/Samples/inc/ISampleVisitor.h +++ b/Core/Samples/inc/ISampleVisitor.h @@ -19,111 +19,177 @@ #include "Exceptions.h" class ISample; -class MultiLayer; +// - the order according to the hierarchy as reported by IDE +class ICompositeSample; +// - +class IClusteredParticles; +class Crystal; +// - +class IDecoration; +class ParticleDecoration; +// - class Layer; +// - class LayerInterface; -class ParticleDecoration; -class ParticleInfo; +// - +class MultiLayer; +// - class Particle; -class ParticleCoreShell; -class MesoCrystal; -class Crystal; class LatticeBasis; -class IClusteredParticles; +class MesoCrystal; +class ParticleCoreShell; +// - +class ParticleInfo; +class DiffuseParticleInfo; +class PositionParticleInfo; +// - class IFormFactor; -class IInterferenceFunction; -class FormFactorFullSphere; -class FormFactorPyramid; +// - +class FormFactorDWBAPol; +class FormFactorDWBAPolConstZ; +// - +class FormFactorWeighted; +// - +class IFormFactorBorn; +// - +class FormFactorBox; +class FormFactorCone; +class FormFactorCone6; +class FormFactorCrystal; class FormFactorCylinder; +class FormFactorEllipsoid; +class FormFactorFullSphere; +class FormFactorFullSpheroid; +class FormFactorGauss; +class FormFactorHemiSpheroid; +class FormFactorLorentz; +class FormFactorParallelepiped; class FormFactorPrism3; +class FormFactorPrism6; +class FormFactorPyramid; +class FormFactorSphere; +class FormFactorSphereGaussianRadius; +class FormFactorTetrahedron; +class IFormFactorBornSeparable; +// - +class IFormFactorDecorator; +// - +class FormFactorDWBA; +class FormFactorDWBAConstZ; +class FormFactorDecoratorDebyeWaller; +class FormFactorDecoratorFactor; +class FormFactorDecoratorMaterial; +class FormFactorDecoratorMultiPositionFactor; +class FormFactorDecoratorPositionFactor; +class FormFactorDecoratorTransformation; +// - +class IInterferenceFunction; class InterferenceFunction1DParaCrystal; -class InterferenceFunction2DParaCrystal; class InterferenceFunction2DLattice; +class InterferenceFunction2DParaCrystal; +class InterferenceFunctionNone; +// - +class IRoughness; class LayerRoughness; -//! Interface to visit a sample tree and perform operations on its nodes - class BA_CORE_API_ ISampleVisitor { public: - //! Destructor - virtual ~ISampleVisitor() {} - - //! Performs specific action on the given sample - //! Needs to be overloaded for different ISample types - - virtual void visit(const ISample *) { throw NotImplementedException( - "ISampleVisitor::visit(ISample *)"); } - virtual void visit(const MultiLayer *) { throw NotImplementedException( - "ISampleVisitor::visit(MultiLayer *)"); } - virtual void visit(const Layer *) { throw NotImplementedException( - "ISampleVisitor::visit(Layer *)"); } - virtual void visit(const LayerInterface *) { throw NotImplementedException( - "ISampleVisitor::visit(LayerInterface *)"); } - virtual void visit(const ParticleDecoration *) { - throw NotImplementedException( - "ISampleVisitor::visit(ParticleDecoration *)"); - } - virtual void visit(const ParticleInfo *) { throw NotImplementedException( - "ISampleVisitor::visit(ParticleInfo *)"); } - virtual void visit(const Particle *) { throw NotImplementedException( - "ISampleVisitor::visit(Particle *)"); } - virtual void visit(const ParticleCoreShell *) { - throw NotImplementedException( - "ISampleVisitor::visit(ParticleCoreShell *)"); - } - virtual void visit(const MesoCrystal *) { throw NotImplementedException( - "ISampleVisitor::visit(MesoCrystal *)"); } - virtual void visit(const Crystal *) { - throw NotImplementedException( - "ISampleVisitor::visit(Crystal *)"); } - virtual void visit(const LatticeBasis *) { throw NotImplementedException( - "ISampleVisitor::visit(LatticeBasis *)"); } - virtual void visit(const IFormFactor *) { throw NotImplementedException( - "ISampleVisitor::visit(IFormFactor *)"); } - virtual void visit(const FormFactorFullSphere *) { - throw NotImplementedException( - "ISampleVisitor::visit(FormFactorFullSphere *)"); - } - virtual void visit(const FormFactorPyramid *) { - throw NotImplementedException( - "ISampleVisitor::visit(FormFactorPyramid *)"); - } - virtual void visit(const FormFactorCylinder *) { - throw NotImplementedException( - "ISampleVisitor::visit(FormFactorCylinder *)"); - } - virtual void visit(const FormFactorPrism3 *) { - throw NotImplementedException( - "ISampleVisitor::visit(FormFactorPrism3 *)"); - } - virtual void visit(const IInterferenceFunction *) { - throw NotImplementedException( - "ISampleVisitor::visit(IInterferenceFunction *)"); - } - virtual void visit(const InterferenceFunction1DParaCrystal *) { - throw NotImplementedException( - "ISampleVisitor::visit(InterferenceFunction1DParaCrystal *)"); - } - virtual void visit(const InterferenceFunction2DParaCrystal *) { - throw NotImplementedException( - "ISampleVisitor::visit(InterferenceFunction2DParaCrystal *)"); - } - - virtual void visit(const LayerRoughness *) { - throw NotImplementedException( - "ISampleVisitor::visit(LayerRoughness *)"); - } - - virtual void visit(const InterferenceFunction2DLattice *) { - throw NotImplementedException( - "ISampleVisitor::visit(InterferenceFunction2DParaCrystal *)"); - } - - virtual bool goForward(){ return true; } - virtual bool goBack(){ return true; } + ISampleVisitor() : m_level(0) {} + virtual ~ISampleVisitor(){} + + // visiting methods (the order according to the hierarchy as reported by IDE) + + virtual void visit(const ISample *); + + virtual void visit(const ICompositeSample *); + + virtual void visit(const IClusteredParticles *); + virtual void visit(const Crystal *); + + virtual void visit(const IDecoration *); + virtual void visit(const ParticleDecoration *); + + virtual void visit(const Layer *); + + virtual void visit(const LayerInterface *); + + virtual void visit(const MultiLayer *); + + virtual void visit(const Particle *); + virtual void visit(const LatticeBasis *); + virtual void visit(const MesoCrystal *); + virtual void visit(const ParticleCoreShell *); + + virtual void visit(const ParticleInfo *); + virtual void visit(const DiffuseParticleInfo *); + virtual void visit(const PositionParticleInfo *); + + virtual void visit(const IFormFactor *); + + virtual void visit(const FormFactorDWBAPol *); + virtual void visit(const FormFactorDWBAPolConstZ *); + + virtual void visit(const FormFactorWeighted *); + + virtual void visit(const IFormFactorBorn *); + + virtual void visit(const FormFactorBox *); + virtual void visit(const FormFactorCone *); + virtual void visit(const FormFactorCone6 *); + virtual void visit(const FormFactorCrystal *); + virtual void visit(const FormFactorCylinder *); + virtual void visit(const FormFactorEllipsoid *); + virtual void visit(const FormFactorFullSphere *); + virtual void visit(const FormFactorFullSpheroid *); + virtual void visit(const FormFactorGauss *); + virtual void visit(const FormFactorHemiSpheroid *); + virtual void visit(const FormFactorLorentz *); + virtual void visit(const FormFactorParallelepiped *); + virtual void visit(const FormFactorPrism3 *); + virtual void visit(const FormFactorPrism6 *); + virtual void visit(const FormFactorPyramid *); + virtual void visit(const FormFactorSphere *); + virtual void visit(const FormFactorSphereGaussianRadius *); + virtual void visit(const FormFactorTetrahedron *); + virtual void visit(const IFormFactorBornSeparable *); + + virtual void visit(const IFormFactorDecorator *); + + virtual void visit(const FormFactorDWBA *); + virtual void visit(const FormFactorDWBAConstZ *); + virtual void visit(const FormFactorDecoratorDebyeWaller *); + virtual void visit(const FormFactorDecoratorFactor *); + virtual void visit(const FormFactorDecoratorMaterial *); + virtual void visit(const FormFactorDecoratorMultiPositionFactor *); + virtual void visit(const FormFactorDecoratorPositionFactor *); + virtual void visit(const FormFactorDecoratorTransformation *); + + virtual void visit(const IInterferenceFunction *); + virtual void visit(const InterferenceFunction1DParaCrystal *); + virtual void visit(const InterferenceFunction2DLattice *); + virtual void visit(const InterferenceFunction2DParaCrystal *); + virtual void visit(const InterferenceFunctionNone *); + + virtual void visit(const IRoughness *); + virtual void visit(const LayerRoughness *); + + // enter and leave methods + bool visitEnter(const ICompositeSample *); + bool visitLeave(const ICompositeSample *); + + //! return current level of the visitor in the composite hierarchy + int getLevel() const { return m_level; } + + //! set current level of the visitor in the composite hierarchy + void setLevel(int level) { m_level = level; } + +private: + int m_level; }; +void VisitSampleTree(ISample &sample, ISampleVisitor &visitor); + #endif // ISAMPLEVISITOR_H diff --git a/Core/Samples/src/ISample.cpp b/Core/Samples/src/ISample.cpp index 71910444ff1..52294866f15 100644 --- a/Core/Samples/src/ISample.cpp +++ b/Core/Samples/src/ISample.cpp @@ -75,7 +75,8 @@ std::string ISample::addParametersToExternalPool( void ISample::printSampleTree() { SamplePrintVisitor visitor; - this->accept(&visitor); + VisitSampleTree(*this, visitor); + //this->accept(&visitor); } bool ISample::containsMagneticMaterial() const diff --git a/Core/Samples/src/ISampleHierarchicalVisitor.cpp b/Core/Samples/src/ISampleHierarchicalVisitor.cpp deleted file mode 100644 index 4eb51dcae03..00000000000 --- a/Core/Samples/src/ISampleHierarchicalVisitor.cpp +++ /dev/null @@ -1,292 +0,0 @@ -#include "ISampleHierarchicalVisitor.h" - - -bool ISampleHierarchicalVisitor::visit(const ISample *) -{ - throw NotImplementedException("ISampleHierarchicalVisitor::visit(const ISample *) -> Error. Not implemented."); -} - -bool ISampleHierarchicalVisitor::visit(const ICompositeSample *) -{ - throw NotImplementedException("ISampleHierarchicalVisitor::visit(const ICompositeSample *) -> Error. Not implemented."); -} - -bool ISampleHierarchicalVisitor::visit(const IClusteredParticles *) -{ - throw NotImplementedException("ISampleHierarchicalVisitor::visit(const IClusteredParticles *) -> Error. Not implemented."); -} - -bool ISampleHierarchicalVisitor::visit(const Crystal *) -{ - throw NotImplementedException("ISampleHierarchicalVisitor::visit(const Crystal *) -> Error. Not implemented."); -} - -bool ISampleHierarchicalVisitor::visit(const IDecoration *) -{ - throw NotImplementedException("ISampleHierarchicalVisitor::visit(const IDecoration *) -> Error. Not implemented."); -} - -bool ISampleHierarchicalVisitor::visit(const ParticleDecoration *) -{ - throw NotImplementedException("ISampleHierarchicalVisitor::visit(const ParticleDecoration *) -> Error. Not implemented."); -} - -bool ISampleHierarchicalVisitor::visit(const Layer *) -{ - throw NotImplementedException("ISampleHierarchicalVisitor::visit(const Layer *) -> Error. Not implemented."); -} - -bool ISampleHierarchicalVisitor::visit(const LayerInterface *) -{ - throw NotImplementedException("ISampleHierarchicalVisitor::visit(const LayerInterface *) -> Error. Not implemented."); -} - -bool ISampleHierarchicalVisitor::visit(const MultiLayer *) -{ - throw NotImplementedException("ISampleHierarchicalVisitor::visit(const MultiLayer *) -> Error. Not implemented."); -} - -bool ISampleHierarchicalVisitor::visit(const Particle *) -{ - throw NotImplementedException("ISampleHierarchicalVisitor::visit(const Particle *) -> Error. Not implemented."); -} - -bool ISampleHierarchicalVisitor::visit(const LatticeBasis *) -{ - throw NotImplementedException("ISampleHierarchicalVisitor::visit(const LatticeBasis *) -> Error. Not implemented."); -} - -bool ISampleHierarchicalVisitor::visit(const MesoCrystal *) -{ - throw NotImplementedException("ISampleHierarchicalVisitor::visit(const MesoCrystal *) -> Error. Not implemented."); -} - -bool ISampleHierarchicalVisitor::visit(const ParticleCoreShell *) -{ - throw NotImplementedException("ISampleHierarchicalVisitor::visit(const ParticleCoreShell *) -> Error. Not implemented."); -} - -bool ISampleHierarchicalVisitor::visit(const ParticleInfo *) -{ - throw NotImplementedException("ISampleHierarchicalVisitor::visit(const ParticleInfo *) -> Error. Not implemented."); -} - -bool ISampleHierarchicalVisitor::visit(const DiffuseParticleInfo *) -{ - throw NotImplementedException("ISampleHierarchicalVisitor::visit(const DiffuseParticleInfo *) -> Error. Not implemented."); -} - -bool ISampleHierarchicalVisitor::visit(const PositionParticleInfo *) -{ - throw NotImplementedException("ISampleHierarchicalVisitor::visit(const PositionParticleInfo *) -> Error. Not implemented."); -} - -bool ISampleHierarchicalVisitor::visit(const IFormFactor *) -{ - throw NotImplementedException("ISampleHierarchicalVisitor::visit(const IFormFactor *) -> Error. Not implemented."); -} - -bool ISampleHierarchicalVisitor::visit(const FormFactorDWBAPol *) -{ - throw NotImplementedException("ISampleHierarchicalVisitor::visit(const FormFactorDWBAPol *) -> Error. Not implemented."); -} - -bool ISampleHierarchicalVisitor::visit(const FormFactorDWBAPolConstZ *) -{ - throw NotImplementedException("ISampleHierarchicalVisitor::visit(const FormFactorDWBAPolConstZ *) -> Error. Not implemented."); -} - -bool ISampleHierarchicalVisitor::visit(const FormFactorWeighted *) -{ - throw NotImplementedException("ISampleHierarchicalVisitor::visit(const FormFactorWeighted *) -> Error. Not implemented."); -} - -bool ISampleHierarchicalVisitor::visit(const IFormFactorBorn *) -{ - throw NotImplementedException("ISampleHierarchicalVisitor::visit(const IFormFactorBorn *) -> Error. Not implemented."); -} - -bool ISampleHierarchicalVisitor::visit(const FormFactorBox *) -{ - throw NotImplementedException("ISampleHierarchicalVisitor::visit(const FormFactorBox *) -> Error. Not implemented."); -} - -bool ISampleHierarchicalVisitor::visit(const FormFactorCone *) -{ - throw NotImplementedException("ISampleHierarchicalVisitor::visit(const FormFactorCone *) -> Error. Not implemented."); -} - -bool ISampleHierarchicalVisitor::visit(const FormFactorCrystal *) -{ - throw NotImplementedException("ISampleHierarchicalVisitor::visit(const FormFactorCrystal *) -> Error. Not implemented."); -} - -bool ISampleHierarchicalVisitor::visit(const FormFactorCylinder *) -{ - throw NotImplementedException("ISampleHierarchicalVisitor::visit(const FormFactorCylinder *) -> Error. Not implemented."); -} - -bool ISampleHierarchicalVisitor::visit(const FormFactorEllipsoid *) -{ - throw NotImplementedException("ISampleHierarchicalVisitor::visit(const FormFactorEllipsoid *) -> Error. Not implemented."); -} - -bool ISampleHierarchicalVisitor::visit(const FormFactorFullSphere *) -{ - throw NotImplementedException("ISampleHierarchicalVisitor::visit(const FormFactorFullSphere *) -> Error. Not implemented."); -} - -bool ISampleHierarchicalVisitor::visit(const FormFactorFullSpheroid *) -{ - throw NotImplementedException("ISampleHierarchicalVisitor::visit(const FormFactorFullSpheroid *) -> Error. Not implemented."); -} - -bool ISampleHierarchicalVisitor::visit(const FormFactorGauss *) -{ - throw NotImplementedException("ISampleHierarchicalVisitor::visit(const FormFactorGauss *) -> Error. Not implemented."); -} - -bool ISampleHierarchicalVisitor::visit(const FormFactorHemiSpheroid *) -{ - throw NotImplementedException("ISampleHierarchicalVisitor::visit const FormFactorHemiSpheroid *) -> Error. Not implemented."); -} - -bool ISampleHierarchicalVisitor::visit(const FormFactorLorentz *) -{ - throw NotImplementedException("ISampleHierarchicalVisitor::visit(const FormFactorLorentz *) -> Error. Not implemented."); -} - -bool ISampleHierarchicalVisitor::visit(const FormFactorParallelepiped *) -{ - throw NotImplementedException("ISampleHierarchicalVisitor::visit(const FormFactorParallelepiped *) -> Error. Not implemented."); -} - -bool ISampleHierarchicalVisitor::visit(const FormFactorPrism3 *) -{ - throw NotImplementedException("ISampleHierarchicalVisitor::visit(const FormFactorPrism3 *) -> Error. Not implemented."); -} - -bool ISampleHierarchicalVisitor::visit(const FormFactorPrism6 *) -{ - throw NotImplementedException("ISampleHierarchicalVisitor::visit(const FormFactorPrism6 *) -> Error. Not implemented."); -} - -bool ISampleHierarchicalVisitor::visit(const FormFactorPyramid *) -{ - throw NotImplementedException("ISampleHierarchicalVisitor::visit(const FormFactorPyramid *) -> Error. Not implemented."); -} - -bool ISampleHierarchicalVisitor::visit(const FormFactorSphere *) -{ - throw NotImplementedException("ISampleHierarchicalVisitor::visit(const FormFactorSphere *) -> Error. Not implemented."); -} - -bool ISampleHierarchicalVisitor::visit(const FormFactorSphereGaussianRadius *) -{ - throw NotImplementedException("ISampleHierarchicalVisitor::visit(const FormFactorSphereGaussianRadius *) -> Error. Not implemented."); -} - -bool ISampleHierarchicalVisitor::visit(const FormFactorTetrahedron *) -{ - throw NotImplementedException("ISampleHierarchicalVisitor::visit(const FormFactorTetrahedron *) -> Error. Not implemented."); -} - -bool ISampleHierarchicalVisitor::visit(const IFormFactorBornSeparable *) -{ - throw NotImplementedException("ISampleHierarchicalVisitor::visit(const IFormFactorBornSeparable *) -> Error. Not implemented."); -} - -bool ISampleHierarchicalVisitor::visit(const IFormFactorDecorator *) -{ - throw NotImplementedException("ISampleHierarchicalVisitor::visit(const IFormFactorDecorator *) -> Error. Not implemented."); -} - -bool ISampleHierarchicalVisitor::visit(const FormFactorDWBA *) -{ - throw NotImplementedException("ISampleHierarchicalVisitor::visit(const FormFactorDWBA *) -> Error. Not implemented."); -} - -bool ISampleHierarchicalVisitor::visit(const FormFactorDWBAConstZ *) -{ - throw NotImplementedException("ISampleHierarchicalVisitor::visit(const FormFactorDWBAConstZ *) -> Error. Not implemented."); -} - -bool ISampleHierarchicalVisitor::visit(const FormFactorDecoratorDebyeWaller *) -{ - throw NotImplementedException("ISampleHierarchicalVisitor::visit(const FormFactorDecoratorDebyeWaller *) -> Error. Not implemented."); -} - -bool ISampleHierarchicalVisitor::visit(const FormFactorDecoratorFactor *) -{ - throw NotImplementedException("ISampleHierarchicalVisitor::visit(const FormFactorDecoratorFactor *) -> Error. Not implemented."); -} - -bool ISampleHierarchicalVisitor::visit(const FormFactorDecoratorMaterial *) -{ - throw NotImplementedException("ISampleHierarchicalVisitor::visit(const FormFactorDecoratorMaterial *) -> Error. Not implemented."); -} - -bool ISampleHierarchicalVisitor::visit(const FormFactorDecoratorMultiPositionFactor *) -{ - throw NotImplementedException("ISampleHierarchicalVisitor::visit(const FormFactorDecoratorMultiPositionFactor *) -> Error. Not implemented."); -} - -bool ISampleHierarchicalVisitor::visit(const FormFactorDecoratorPositionFactor *) -{ - throw NotImplementedException("ISampleHierarchicalVisitor::visit(const FormFactorDecoratorPositionFactor *) -> Error. Not implemented."); -} - -bool ISampleHierarchicalVisitor::visit(const FormFactorDecoratorTransformation *) -{ - throw NotImplementedException("ISampleHierarchicalVisitor::visit(const FormFactorDecoratorTransformation *) -> Error. Not implemented."); -} - -bool ISampleHierarchicalVisitor::visit(const IInterferenceFunction *) -{ - throw NotImplementedException("ISampleHierarchicalVisitor::visit(const IInterferenceFunction *) -> Error. Not implemented."); -} - -bool ISampleHierarchicalVisitor::visit(const InterferenceFunction1DParaCrystal *){ - throw NotImplementedException("ISampleHierarchicalVisitor::visit(const InterferenceFunction1DParaCrystal *) -> Error. Not implemented."); -} - -bool ISampleHierarchicalVisitor::visit(const InterferenceFunction2DLattice *) -{ - throw NotImplementedException("ISampleHierarchicalVisitor::visit(const InterferenceFunction2DLattice *) -> Error. Not implemented."); -} - -bool ISampleHierarchicalVisitor::visit(const InterferenceFunction2DParaCrystal *) -{ - throw NotImplementedException("ISampleHierarchicalVisitor::visit(const InterferenceFunction2DParaCrystal *) -> Error. Not implemented."); -} - -bool ISampleHierarchicalVisitor::visit(const InterferenceFunctionNone *) -{ - throw NotImplementedException("ISampleHierarchicalVisitor::visit(const InterferenceFunctionNone *) -> Error. Not implemented."); -} - -bool ISampleHierarchicalVisitor::visit(const IRoughness *) -{ - throw NotImplementedException("ISampleHierarchicalVisitor::visit(const IRoughness *) -> Error. Not implemented."); -} - -bool ISampleHierarchicalVisitor::visit(const LayerRoughness *) -{ - throw NotImplementedException("ISampleHierarchicalVisitor::visit(const LayerRoughness *) -> Error. Not implemented."); -} - - -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- -bool ISampleHierarchicalVisitor::visitEnter(const ICompositeSample *) -{ - m_nlevel++; - return true; -} - -bool ISampleHierarchicalVisitor::visitLeave(const ICompositeSample *) -{ - m_nlevel--; - return true; -} diff --git a/Core/Samples/src/ISampleVisitor.cpp b/Core/Samples/src/ISampleVisitor.cpp new file mode 100644 index 00000000000..e753e720be0 --- /dev/null +++ b/Core/Samples/src/ISampleVisitor.cpp @@ -0,0 +1,373 @@ +#include "ISampleVisitor.h" +#include "ISample.h" +#include "ICompositeSample.h" +#include "ICompositeIterator.h" + + +void VisitSampleTree(ISample &sample, ISampleVisitor &visitor) +{ + sample.accept(&visitor); + ICompositeSample *composite = sample.getCompositeSample(); + if(composite) { + ICompositeIterator it = composite->createIterator(); + it.first(); + while( !it.is_done() ) { + visitor.setLevel(it.get_level()); + ISample *child = it.get_current(); + child->accept(&visitor); + it.next(); + } + } +} + + + +void ISampleVisitor::visit(const ISample *) +{ + throw NotImplementedException("ISampleVisitor::visit(const ISample *) -> Error. Not implemented."); +} + + +void ISampleVisitor::visit(const ICompositeSample *) +{ + throw NotImplementedException("ISampleVisitor::visit(const ICompositeSample *) -> Error. Not implemented."); +} + + +void ISampleVisitor::visit(const IClusteredParticles *) +{ + throw NotImplementedException("ISampleVisitor::visit(const IClusteredParticles *) -> Error. Not implemented."); +} + + +void ISampleVisitor::visit(const Crystal *) +{ + throw NotImplementedException("ISampleVisitor::visit(const Crystal *) -> Error. Not implemented."); +} + + +void ISampleVisitor::visit(const IDecoration *) +{ + throw NotImplementedException("ISampleVisitor::visit(const IDecoration *) -> Error. Not implemented."); +} + + +void ISampleVisitor::visit(const ParticleDecoration *) +{ + throw NotImplementedException("ISampleVisitor::visit(const ParticleDecoration *) -> Error. Not implemented."); +} + + +void ISampleVisitor::visit(const Layer *) +{ + throw NotImplementedException("ISampleVisitor::visit(const Layer *) -> Error. Not implemented."); +} + + +void ISampleVisitor::visit(const LayerInterface *) +{ + throw NotImplementedException("ISampleVisitor::visit(const LayerInterface *) -> Error. Not implemented."); +} + + +void ISampleVisitor::visit(const MultiLayer *) +{ + throw NotImplementedException("ISampleVisitor::visit(const MultiLayer *) -> Error. Not implemented."); +} + + +void ISampleVisitor::visit(const Particle *) +{ + throw NotImplementedException("ISampleVisitor::visit(const Particle *) -> Error. Not implemented."); +} + + +void ISampleVisitor::visit(const LatticeBasis *) +{ + throw NotImplementedException("ISampleVisitor::visit(const LatticeBasis *) -> Error. Not implemented."); +} + + +void ISampleVisitor::visit(const MesoCrystal *) +{ + throw NotImplementedException("ISampleVisitor::visit(const MesoCrystal *) -> Error. Not implemented."); +} + + +void ISampleVisitor::visit(const ParticleCoreShell *) +{ + throw NotImplementedException("ISampleVisitor::visit(const ParticleCoreShell *) -> Error. Not implemented."); +} + + +void ISampleVisitor::visit(const ParticleInfo *) +{ + throw NotImplementedException("ISampleVisitor::visit(const ParticleInfo *) -> Error. Not implemented."); +} + + +void ISampleVisitor::visit(const DiffuseParticleInfo *) +{ + throw NotImplementedException("ISampleVisitor::visit(const DiffuseParticleInfo *) -> Error. Not implemented."); +} + + +void ISampleVisitor::visit(const PositionParticleInfo *) +{ + throw NotImplementedException("ISampleVisitor::visit(const PositionParticleInfo *) -> Error. Not implemented."); +} + + +void ISampleVisitor::visit(const IFormFactor *) +{ + throw NotImplementedException("ISampleVisitor::visit(const IFormFactor *) -> Error. Not implemented."); +} + + +void ISampleVisitor::visit(const FormFactorDWBAPol *) +{ + throw NotImplementedException("ISampleVisitor::visit(const FormFactorDWBAPol *) -> Error. Not implemented."); +} + + +void ISampleVisitor::visit(const FormFactorDWBAPolConstZ *) +{ + throw NotImplementedException("ISampleVisitor::visit(const FormFactorDWBAPolConstZ *) -> Error. Not implemented."); +} + + +void ISampleVisitor::visit(const FormFactorWeighted *) +{ + throw NotImplementedException("ISampleVisitor::visit(const FormFactorWeighted *) -> Error. Not implemented."); +} + + +void ISampleVisitor::visit(const IFormFactorBorn *) +{ + throw NotImplementedException("ISampleVisitor::visit(const IFormFactorBorn *) -> Error. Not implemented."); +} + + +void ISampleVisitor::visit(const FormFactorBox *) +{ + throw NotImplementedException("ISampleVisitor::visit(const FormFactorBox *) -> Error. Not implemented."); +} + + +void ISampleVisitor::visit(const FormFactorCone *) +{ + throw NotImplementedException("ISampleVisitor::visit(const FormFactorCone *) -> Error. Not implemented."); +} + + +void ISampleVisitor::visit(const FormFactorCone6 *) +{ + throw NotImplementedException("ISampleVisitor::visit(const FormFactorCone6 *) -> Error. Not implemented."); +} + + +void ISampleVisitor::visit(const FormFactorCrystal *) +{ + throw NotImplementedException("ISampleVisitor::visit(const FormFactorCrystal *) -> Error. Not implemented."); +} + + +void ISampleVisitor::visit(const FormFactorCylinder *) +{ + throw NotImplementedException("ISampleVisitor::visit(const FormFactorCylinder *) -> Error. Not implemented."); +} + + +void ISampleVisitor::visit(const FormFactorEllipsoid *) +{ + throw NotImplementedException("ISampleVisitor::visit(const FormFactorEllipsoid *) -> Error. Not implemented."); +} + + +void ISampleVisitor::visit(const FormFactorFullSphere *) +{ + throw NotImplementedException("ISampleVisitor::visit(const FormFactorFullSphere *) -> Error. Not implemented."); +} + + +void ISampleVisitor::visit(const FormFactorFullSpheroid *) +{ + throw NotImplementedException("ISampleVisitor::visit(const FormFactorFullSpheroid *) -> Error. Not implemented."); +} + + +void ISampleVisitor::visit(const FormFactorGauss *) +{ + throw NotImplementedException("ISampleVisitor::visit(const FormFactorGauss *) -> Error. Not implemented."); +} + + +void ISampleVisitor::visit(const FormFactorHemiSpheroid *) +{ + throw NotImplementedException("ISampleVisitor::visit const FormFactorHemiSpheroid *) -> Error. Not implemented."); +} + + +void ISampleVisitor::visit(const FormFactorLorentz *) +{ + throw NotImplementedException("ISampleVisitor::visit(const FormFactorLorentz *) -> Error. Not implemented."); +} + + +void ISampleVisitor::visit(const FormFactorParallelepiped *) +{ + throw NotImplementedException("ISampleVisitor::visit(const FormFactorParallelepiped *) -> Error. Not implemented."); +} + + +void ISampleVisitor::visit(const FormFactorPrism3 *) +{ + throw NotImplementedException("ISampleVisitor::visit(const FormFactorPrism3 *) -> Error. Not implemented."); +} + + +void ISampleVisitor::visit(const FormFactorPrism6 *) +{ + throw NotImplementedException("ISampleVisitor::visit(const FormFactorPrism6 *) -> Error. Not implemented."); +} + + +void ISampleVisitor::visit(const FormFactorPyramid *) +{ + throw NotImplementedException("ISampleVisitor::visit(const FormFactorPyramid *) -> Error. Not implemented."); +} + + +void ISampleVisitor::visit(const FormFactorSphere *) +{ + throw NotImplementedException("ISampleVisitor::visit(const FormFactorSphere *) -> Error. Not implemented."); +} + + +void ISampleVisitor::visit(const FormFactorSphereGaussianRadius *) +{ + throw NotImplementedException("ISampleVisitor::visit(const FormFactorSphereGaussianRadius *) -> Error. Not implemented."); +} + + +void ISampleVisitor::visit(const FormFactorTetrahedron *) +{ + throw NotImplementedException("ISampleVisitor::visit(const FormFactorTetrahedron *) -> Error. Not implemented."); +} + + +void ISampleVisitor::visit(const IFormFactorBornSeparable *) +{ + throw NotImplementedException("ISampleVisitor::visit(const IFormFactorBornSeparable *) -> Error. Not implemented."); +} + + +void ISampleVisitor::visit(const IFormFactorDecorator *) +{ + throw NotImplementedException("ISampleVisitor::visit(const IFormFactorDecorator *) -> Error. Not implemented."); +} + + +void ISampleVisitor::visit(const FormFactorDWBA *) +{ + throw NotImplementedException("ISampleVisitor::visit(const FormFactorDWBA *) -> Error. Not implemented."); +} + + +void ISampleVisitor::visit(const FormFactorDWBAConstZ *) +{ + throw NotImplementedException("ISampleVisitor::visit(const FormFactorDWBAConstZ *) -> Error. Not implemented."); +} + + +void ISampleVisitor::visit(const FormFactorDecoratorDebyeWaller *) +{ + throw NotImplementedException("ISampleVisitor::visit(const FormFactorDecoratorDebyeWaller *) -> Error. Not implemented."); +} + + +void ISampleVisitor::visit(const FormFactorDecoratorFactor *) +{ + throw NotImplementedException("ISampleVisitor::visit(const FormFactorDecoratorFactor *) -> Error. Not implemented."); +} + + +void ISampleVisitor::visit(const FormFactorDecoratorMaterial *) +{ + throw NotImplementedException("ISampleVisitor::visit(const FormFactorDecoratorMaterial *) -> Error. Not implemented."); +} + + +void ISampleVisitor::visit(const FormFactorDecoratorMultiPositionFactor *) +{ + throw NotImplementedException("ISampleVisitor::visit(const FormFactorDecoratorMultiPositionFactor *) -> Error. Not implemented."); +} + + +void ISampleVisitor::visit(const FormFactorDecoratorPositionFactor *) +{ + throw NotImplementedException("ISampleVisitor::visit(const FormFactorDecoratorPositionFactor *) -> Error. Not implemented."); +} + + +void ISampleVisitor::visit(const FormFactorDecoratorTransformation *) +{ + throw NotImplementedException("ISampleVisitor::visit(const FormFactorDecoratorTransformation *) -> Error. Not implemented."); +} + + +void ISampleVisitor::visit(const IInterferenceFunction *) +{ + throw NotImplementedException("ISampleVisitor::visit(const IInterferenceFunction *) -> Error. Not implemented."); +} + + +void ISampleVisitor::visit(const InterferenceFunction1DParaCrystal *){ + throw NotImplementedException("ISampleVisitor::visit(const InterferenceFunction1DParaCrystal *) -> Error. Not implemented."); +} + + +void ISampleVisitor::visit(const InterferenceFunction2DLattice *) +{ + throw NotImplementedException("ISampleVisitor::visit(const InterferenceFunction2DLattice *) -> Error. Not implemented."); +} + + +void ISampleVisitor::visit(const InterferenceFunction2DParaCrystal *) +{ + throw NotImplementedException("ISampleVisitor::visit(const InterferenceFunction2DParaCrystal *) -> Error. Not implemented."); +} + + +void ISampleVisitor::visit(const InterferenceFunctionNone *) +{ + throw NotImplementedException("ISampleVisitor::visit(const InterferenceFunctionNone *) -> Error. Not implemented."); +} + + +void ISampleVisitor::visit(const IRoughness *) +{ + throw NotImplementedException("ISampleVisitor::visit(const IRoughness *) -> Error. Not implemented."); +} + + +void ISampleVisitor::visit(const LayerRoughness *) +{ + throw NotImplementedException("ISampleVisitor::visit(const LayerRoughness *) -> Error. Not implemented."); +} + + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +bool ISampleVisitor::visitEnter(const ICompositeSample *) +{ + m_level++; + return false; +} + +bool ISampleVisitor::visitLeave(const ICompositeSample *) +{ + m_level--; + return false; +} diff --git a/Core/Tools/inc/SampleMaterialVisitor.h b/Core/Tools/inc/SampleMaterialVisitor.h index 157e4c84b27..c96a15df966 100644 --- a/Core/Tools/inc/SampleMaterialVisitor.h +++ b/Core/Tools/inc/SampleMaterialVisitor.h @@ -23,34 +23,86 @@ class SampleMaterialVisitor : public ISampleVisitor { public: - SampleMaterialVisitor(); + SampleMaterialVisitor(){} virtual ~SampleMaterialVisitor(); - void visit(const ISample *sample); - void visit(const MultiLayer *sample); - void visit(const Layer *sample); - void visit(const LayerInterface *sample); - void visit(const ParticleDecoration *sample); - void visit(const ParticleInfo *sample); - void visit(const Particle *sample); - void visit(const ParticleCoreShell *sample); - void visit(const MesoCrystal *sample); - void visit(const Crystal *sample); - void visit(const LatticeBasis *sample); - void visit(const IFormFactor *sample); - - void visit(const FormFactorFullSphere *sample); - void visit(const FormFactorPyramid *sample); - void visit(const FormFactorCylinder *sample); - void visit(const FormFactorPrism3 *sample); - - void visit(const IInterferenceFunction *sample); - void visit(const InterferenceFunction1DParaCrystal *); - void visit(const InterferenceFunction2DParaCrystal *); - void visit(const InterferenceFunction2DLattice *); - - void visit(const LayerRoughness *); + // visiting methods (the order according to the hierarchy as reported by IDE) + virtual void visit(const ISample *sample); + + virtual void visit(const ICompositeSample *sample); + + virtual void visit(const IClusteredParticles *sample); + virtual void visit(const Crystal *sample); + + virtual void visit(const IDecoration *sample); + virtual void visit(const ParticleDecoration *sample); + + virtual void visit(const Layer *sample); + + virtual void visit(const LayerInterface *sample); + + virtual void visit(const MultiLayer *sample); + + virtual void visit(const Particle *sample); + virtual void visit(const LatticeBasis *sample); + virtual void visit(const MesoCrystal *sample); + virtual void visit(const ParticleCoreShell *sample); + + virtual void visit(const ParticleInfo *sample); + virtual void visit(const DiffuseParticleInfo *sample); + virtual void visit(const PositionParticleInfo *sample); + + virtual void visit(const IFormFactor *sample); + + virtual void visit(const FormFactorDWBAPol *sample); + virtual void visit(const FormFactorDWBAPolConstZ *sample); + + virtual void visit(const FormFactorWeighted *sample); + + virtual void visit(const IFormFactorBorn *sample); + + virtual void visit(const FormFactorBox *sample); + virtual void visit(const FormFactorCone *sample); + virtual void visit(const FormFactorCone6 *sample); + virtual void visit(const FormFactorCrystal *sample); + virtual void visit(const FormFactorCylinder *sample); + virtual void visit(const FormFactorEllipsoid *sample); + virtual void visit(const FormFactorFullSphere *sample); + virtual void visit(const FormFactorFullSpheroid *sample); + virtual void visit(const FormFactorGauss *sample); + virtual void visit(const FormFactorHemiSpheroid *sample); + virtual void visit(const FormFactorLorentz *sample); + virtual void visit(const FormFactorParallelepiped *sample); + virtual void visit(const FormFactorPrism3 *sample); + virtual void visit(const FormFactorPrism6 *sample); + virtual void visit(const FormFactorPyramid *sample); + virtual void visit(const FormFactorSphere *sample); + virtual void visit(const FormFactorSphereGaussianRadius *sample); + virtual void visit(const FormFactorTetrahedron *sample); + virtual void visit(const IFormFactorBornSeparable *sample); + + virtual void visit(const IFormFactorDecorator *sample); + + virtual void visit(const FormFactorDWBA *sample); + virtual void visit(const FormFactorDWBAConstZ *sample); + virtual void visit(const FormFactorDecoratorDebyeWaller *sample); + virtual void visit(const FormFactorDecoratorFactor *sample); + virtual void visit(const FormFactorDecoratorMaterial *sample); + virtual void visit(const FormFactorDecoratorMultiPositionFactor *sample); + virtual void visit(const FormFactorDecoratorPositionFactor *sample); + virtual void visit(const FormFactorDecoratorTransformation *sample); + + virtual void visit(const IInterferenceFunction *sample); + virtual void visit(const InterferenceFunction1DParaCrystal *sample); + virtual void visit(const InterferenceFunction2DLattice *sample); + virtual void visit(const InterferenceFunction2DParaCrystal *sample); + virtual void visit(const InterferenceFunctionNone *sample); + + virtual void visit(const IRoughness *sample); + virtual void visit(const LayerRoughness *sample); + + //! return vector of material presented in the sample std::vector<const IMaterial *> getMaterials() const { return m_materials; } diff --git a/Core/Tools/inc/SamplePrintVisitor.h b/Core/Tools/inc/SamplePrintVisitor.h index f08a47f9f68..cf08a1bc55b 100644 --- a/Core/Tools/inc/SamplePrintVisitor.h +++ b/Core/Tools/inc/SamplePrintVisitor.h @@ -8,60 +8,92 @@ class BA_CORE_API_ SamplePrintVisitor : public ISampleVisitor { public: - SamplePrintVisitor() : m_level(0){} - - void visit(const ISample *sample); - void visit(const MultiLayer *sample); - void visit(const Layer *sample); - void visit(const LayerInterface *sample); - void visit(const ParticleDecoration *sample); - void visit(const ParticleInfo *sample); - void visit(const Particle *sample); - void visit(const ParticleCoreShell *sample); - void visit(const MesoCrystal *sample); - void visit(const Crystal *sample); - void visit(const LatticeBasis *sample); - void visit(const IFormFactor *sample); - - - void visit(const FormFactorFullSphere *sample); - void visit(const FormFactorPyramid *sample); - void visit(const FormFactorCylinder *sample); - void visit(const FormFactorPrism3 *sample); - - void visit(const IInterferenceFunction *sample); - void visit(const InterferenceFunction1DParaCrystal *); - void visit(const InterferenceFunction2DParaCrystal *); - void visit(const InterferenceFunction2DLattice *); - - void visit(const LayerRoughness *sample); - - bool goForward(); - bool goBack(); -private: - std::string get_indent(); - int m_level; -}; + SamplePrintVisitor() {} + virtual void visit(const ISample *sample); -inline bool SamplePrintVisitor::goForward() -{ - ++m_level; - return true; -} + virtual void visit(const ICompositeSample *sample); -inline bool SamplePrintVisitor::goBack() -{ - --m_level; - return true; -} + virtual void visit(const IClusteredParticles *sample); + virtual void visit(const Crystal *sample); + + virtual void visit(const IDecoration *sample); + virtual void visit(const ParticleDecoration *sample); + + virtual void visit(const Layer *sample); + + virtual void visit(const LayerInterface *sample); + + virtual void visit(const MultiLayer *sample); + + virtual void visit(const Particle *sample); + virtual void visit(const LatticeBasis *sample); + virtual void visit(const MesoCrystal *sample); + virtual void visit(const ParticleCoreShell *sample); + + virtual void visit(const ParticleInfo *sample); + virtual void visit(const DiffuseParticleInfo *sample); + virtual void visit(const PositionParticleInfo *sample); + + virtual void visit(const IFormFactor *sample); + + virtual void visit(const FormFactorDWBAPol *sample); + virtual void visit(const FormFactorDWBAPolConstZ *sample); + + virtual void visit(const FormFactorWeighted *sample); + + virtual void visit(const IFormFactorBorn *sample); + + virtual void visit(const FormFactorBox *sample); + virtual void visit(const FormFactorCone *sample); + virtual void visit(const FormFactorCone6 *sample); + virtual void visit(const FormFactorCrystal *sample); + virtual void visit(const FormFactorCylinder *sample); + virtual void visit(const FormFactorEllipsoid *sample); + virtual void visit(const FormFactorFullSphere *sample); + virtual void visit(const FormFactorFullSpheroid *sample); + virtual void visit(const FormFactorGauss *sample); + virtual void visit(const FormFactorHemiSpheroid *sample); + virtual void visit(const FormFactorLorentz *sample); + virtual void visit(const FormFactorParallelepiped *sample); + virtual void visit(const FormFactorPrism3 *sample); + virtual void visit(const FormFactorPrism6 *sample); + virtual void visit(const FormFactorPyramid *sample); + virtual void visit(const FormFactorSphere *sample); + virtual void visit(const FormFactorSphereGaussianRadius *sample); + virtual void visit(const FormFactorTetrahedron *sample); + virtual void visit(const IFormFactorBornSeparable *sample); + + virtual void visit(const IFormFactorDecorator *sample); + + virtual void visit(const FormFactorDWBA *sample); + virtual void visit(const FormFactorDWBAConstZ *sample); + virtual void visit(const FormFactorDecoratorDebyeWaller *sample); + virtual void visit(const FormFactorDecoratorFactor *sample); + virtual void visit(const FormFactorDecoratorMaterial *sample); + virtual void visit(const FormFactorDecoratorMultiPositionFactor *sample); + virtual void visit(const FormFactorDecoratorPositionFactor *sample); + virtual void visit(const FormFactorDecoratorTransformation *sample); + + virtual void visit(const IInterferenceFunction *sample); + virtual void visit(const InterferenceFunction1DParaCrystal *sample); + virtual void visit(const InterferenceFunction2DLattice *sample); + virtual void visit(const InterferenceFunction2DParaCrystal *sample); + virtual void visit(const InterferenceFunctionNone *sample); + + virtual void visit(const IRoughness *sample); + virtual void visit(const LayerRoughness *sample); + +private: + std::string get_indent() + { + std::string result; + result.resize(getLevel()*4, '.'); + result += " "; + return result; + } +}; -inline std::string SamplePrintVisitor::get_indent() -{ - std::string result; - result.resize(m_level*4, '.'); - return result; -} #endif // SAMPLEPRINTVISITOR_H diff --git a/Core/Tools/src/SampleMaterialVisitor.cpp b/Core/Tools/src/SampleMaterialVisitor.cpp index 69b6aefe940..dd43edd1456 100644 --- a/Core/Tools/src/SampleMaterialVisitor.cpp +++ b/Core/Tools/src/SampleMaterialVisitor.cpp @@ -12,208 +12,366 @@ //! @authors C. Durniak, G. Pospelov, W. Van Herck, J. Wuttke // // ************************************************************************** // - #include "SampleMaterialVisitor.h" - -#include "ISample.h" -#include "FormFactors.h" -#include "MultiLayer.h" -#include "ParticleDecoration.h" +#include "IMaterial.h" +#include "Layer.h" #include "Particle.h" -#include "ParticleInfo.h" -#include "ParticleCoreShell.h" -#include "MesoCrystal.h" -#include "InterferenceFunction1DParaCrystal.h" -#include "InterferenceFunction2DParaCrystal.h" -#include "InterferenceFunction2DLattice.h" -#include <algorithm> -SampleMaterialVisitor::SampleMaterialVisitor() +SampleMaterialVisitor::~SampleMaterialVisitor() { m_materials.clear(); } -SampleMaterialVisitor::~SampleMaterialVisitor() +void SampleMaterialVisitor::addMaterial(const IMaterial* p_material) { - m_materials.clear(); + if (p_material && std::find(m_materials.begin(), m_materials.end(), + p_material) == m_materials.end() ) { + m_materials.push_back(p_material); + } +} + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- + +void SampleMaterialVisitor::visit(const ISample *) +{ + throw NotImplementedException("SampleMaterialVisitor::visit(const ISample *) -> Error. Not implemented."); } -void SampleMaterialVisitor::visit(const ISample* sample) + +void SampleMaterialVisitor::visit(const ICompositeSample *) { - (void)sample; - throw NotImplementedException("SampleMaterialVisitor::visit(ISample *)"); + throw NotImplementedException("SampleMaterialVisitor::visit(const ICompositeSample *) -> Error. Not implemented."); } -void SampleMaterialVisitor::visit(const MultiLayer* sample) + +void SampleMaterialVisitor::visit(const IClusteredParticles *) { - assert(sample); + throw NotImplementedException("SampleMaterialVisitor::visit(const IClusteredParticles *) -> Error. Not implemented."); +} - for(size_t i_layer=0; i_layer < sample->getNumberOfLayers(); ++i_layer) { - const Layer *layer = sample->getLayer(i_layer); - layer->accept(this); - } + +void SampleMaterialVisitor::visit(const Crystal *) +{ + throw NotImplementedException("SampleMaterialVisitor::visit(const Crystal *) -> Error. Not implemented."); } -void SampleMaterialVisitor::visit(const Layer* sample) + +void SampleMaterialVisitor::visit(const IDecoration *) +{ + throw NotImplementedException("SampleMaterialVisitor::visit(const IDecoration *) -> Error. Not implemented."); +} + + +void SampleMaterialVisitor::visit(const ParticleDecoration *) +{ + throw NotImplementedException("SampleMaterialVisitor::visit(const ParticleDecoration *) -> Error. Not implemented."); +} + + +void SampleMaterialVisitor::visit(const Layer *sample) { assert(sample); + const IMaterial *material = sample->getMaterial(); + addMaterial(material); +} - const IMaterial *p_material = sample->getMaterial(); - addMaterial(p_material); - const IDecoration *p_decoration = sample->getDecoration(); - if (p_decoration) { - p_decoration->accept(this); - } + +void SampleMaterialVisitor::visit(const LayerInterface *) +{ + throw NotImplementedException("SampleMaterialVisitor::visit(const LayerInterface *) -> Error. Not implemented."); } -void SampleMaterialVisitor::visit(const LayerInterface* sample) + +void SampleMaterialVisitor::visit(const MultiLayer *sample) { (void)sample; - throw NotImplementedException("SampleMaterialVisitor::visit(LayerInterface *)"); } -void SampleMaterialVisitor::visit(const ParticleDecoration* sample) + +void SampleMaterialVisitor::visit(const Particle *sample) { assert(sample); + const IMaterial *material = sample->getMaterial(); + addMaterial(material); +} - for (size_t i=0; i<sample->getNumberOfParticles(); ++i) { - const ParticleInfo *p_particle_info = sample->getParticleInfo(i); - p_particle_info->accept(this); - } + +void SampleMaterialVisitor::visit(const LatticeBasis *) +{ + throw NotImplementedException("SampleMaterialVisitor::visit(const LatticeBasis *) -> Error. Not implemented."); } -void SampleMaterialVisitor::visit(const ParticleInfo* sample) + +void SampleMaterialVisitor::visit(const MesoCrystal *) { - assert(sample); + throw NotImplementedException("SampleMaterialVisitor::visit(const MesoCrystal *) -> Error. Not implemented."); +} - const Particle *p_particle = sample->getParticle(); - if (p_particle) { - p_particle->accept(this); - } + +void SampleMaterialVisitor::visit(const ParticleCoreShell *) +{ + throw NotImplementedException("SampleMaterialVisitor::visit(const ParticleCoreShell *) -> Error. Not implemented."); } -void SampleMaterialVisitor::visit(const Particle* sample) + +void SampleMaterialVisitor::visit(const ParticleInfo *) { - assert(sample); + throw NotImplementedException("SampleMaterialVisitor::visit(const ParticleInfo *) -> Error. Not implemented."); +} + - const IMaterial *p_material = sample->getMaterial(); - addMaterial(p_material); +void SampleMaterialVisitor::visit(const DiffuseParticleInfo *) +{ + throw NotImplementedException("SampleMaterialVisitor::visit(const DiffuseParticleInfo *) -> Error. Not implemented."); } -void SampleMaterialVisitor::visit(const ParticleCoreShell* sample) + +void SampleMaterialVisitor::visit(const PositionParticleInfo *) { - assert(sample); + throw NotImplementedException("SampleMaterialVisitor::visit(const PositionParticleInfo *) -> Error. Not implemented."); +} - const Particle *p_core = sample->getCoreParticle(); - if (p_core) { - p_core->accept(this); - } - const Particle *p_shell = sample->getShellParticle(); - if (p_shell) { - p_shell->accept(this); - } + +void SampleMaterialVisitor::visit(const IFormFactor *) +{ + throw NotImplementedException("SampleMaterialVisitor::visit(const IFormFactor *) -> Error. Not implemented."); } -void SampleMaterialVisitor::visit(const MesoCrystal* sample) + +void SampleMaterialVisitor::visit(const FormFactorDWBAPol *) { - assert(sample); + throw NotImplementedException("SampleMaterialVisitor::visit(const FormFactorDWBAPol *) -> Error. Not implemented."); +} + - const IClusteredParticles *p_clustered_particles = - sample->getClusteredParticles(); - p_clustered_particles->accept(this); +void SampleMaterialVisitor::visit(const FormFactorDWBAPolConstZ *) +{ + throw NotImplementedException("SampleMaterialVisitor::visit(const FormFactorDWBAPolConstZ *) -> Error. Not implemented."); } -void SampleMaterialVisitor::visit(const Crystal* sample) + +void SampleMaterialVisitor::visit(const FormFactorWeighted *) { - assert(sample); + throw NotImplementedException("SampleMaterialVisitor::visit(const FormFactorWeighted *) -> Error. Not implemented."); +} - const LatticeBasis *p_lattice_basis = sample->getLatticeBasis(); - p_lattice_basis->accept(this); + +void SampleMaterialVisitor::visit(const IFormFactorBorn *) +{ + throw NotImplementedException("SampleMaterialVisitor::visit(const IFormFactorBorn *) -> Error. Not implemented."); } -void SampleMaterialVisitor::visit(const LatticeBasis* sample) + +void SampleMaterialVisitor::visit(const FormFactorBox *) { - assert(sample); + throw NotImplementedException("SampleMaterialVisitor::visit(const FormFactorBox *) -> Error. Not implemented."); +} - size_t nbr_particles = sample->getNbrParticles(); - for (size_t i=0; i<nbr_particles; ++i) - { - const Particle *p_particle = sample->getParticle(i); - p_particle->accept(this); - } + +void SampleMaterialVisitor::visit(const FormFactorCone *) +{ + throw NotImplementedException("SampleMaterialVisitor::visit(const FormFactorCone *) -> Error. Not implemented."); } -void SampleMaterialVisitor::visit(const IFormFactor* sample) + +void SampleMaterialVisitor::visit(const FormFactorCone6 *) { - (void)sample; - throw NotImplementedException("SampleMaterialVisitor::" - "visit(IFormFactor *)"); + throw NotImplementedException("SampleMaterialVisitor::visit(const FormFactorCone6 *) -> Error. Not implemented."); } -void SampleMaterialVisitor::visit(const FormFactorFullSphere* sample) + +void SampleMaterialVisitor::visit(const FormFactorCrystal *) { - (void)sample; - throw NotImplementedException("SampleMaterialVisitor::" - "visit(FormFactorFullSphere *)"); + throw NotImplementedException("SampleMaterialVisitor::visit(const FormFactorCrystal *) -> Error. Not implemented."); } -void SampleMaterialVisitor::visit(const FormFactorPyramid* sample) + +void SampleMaterialVisitor::visit(const FormFactorCylinder *) { - (void)sample; - throw NotImplementedException("SampleMaterialVisitor::" - "visit(FormFactorPyramid *)"); + throw NotImplementedException("SampleMaterialVisitor::visit(const FormFactorCylinder *) -> Error. Not implemented."); } -void SampleMaterialVisitor::visit(const FormFactorCylinder* sample) + +void SampleMaterialVisitor::visit(const FormFactorEllipsoid *) { - (void)sample; - throw NotImplementedException("SampleMaterialVisitor::" - "visit(FormFactorCylinder *)"); + throw NotImplementedException("SampleMaterialVisitor::visit(const FormFactorEllipsoid *) -> Error. Not implemented."); } -void SampleMaterialVisitor::visit(const FormFactorPrism3* sample) + +void SampleMaterialVisitor::visit(const FormFactorFullSphere *) { - (void)sample; - throw NotImplementedException("SampleMaterialVisitor::" - "visit(FormFactorPrism3 *)"); + throw NotImplementedException("SampleMaterialVisitor::visit(const FormFactorFullSphere *) -> Error. Not implemented."); } -void SampleMaterialVisitor::visit(const IInterferenceFunction* sample) + +void SampleMaterialVisitor::visit(const FormFactorFullSpheroid *) { - (void)sample; - throw NotImplementedException("SampleMaterialVisitor::" - "visit(IInterferenceFunction *)"); + throw NotImplementedException("SampleMaterialVisitor::visit(const FormFactorFullSpheroid *) -> Error. Not implemented."); } -void SampleMaterialVisitor::visit(const InterferenceFunction1DParaCrystal*) + +void SampleMaterialVisitor::visit(const FormFactorGauss *) { - throw NotImplementedException("SampleMaterialVisitor::" - "visit(IInterferenceFunction *)"); + throw NotImplementedException("SampleMaterialVisitor::visit(const FormFactorGauss *) -> Error. Not implemented."); } -void SampleMaterialVisitor::visit(const InterferenceFunction2DParaCrystal*) + +void SampleMaterialVisitor::visit(const FormFactorHemiSpheroid *) { - throw NotImplementedException("SampleMaterialVisitor::" - "visit(InterferenceFunction2DParaCrystal *)"); + throw NotImplementedException("SampleMaterialVisitor::visit const FormFactorHemiSpheroid *) -> Error. Not implemented."); } -void SampleMaterialVisitor::visit(const InterferenceFunction2DLattice*) + +void SampleMaterialVisitor::visit(const FormFactorLorentz *) { - throw NotImplementedException("SampleMaterialVisitor::" - "visit(InterferenceFunction2DLattice *)"); + throw NotImplementedException("SampleMaterialVisitor::visit(const FormFactorLorentz *) -> Error. Not implemented."); } -void SampleMaterialVisitor::visit(const LayerRoughness*) + +void SampleMaterialVisitor::visit(const FormFactorParallelepiped *) { - throw NotImplementedException("SampleMaterialVisitor::" - "visit(LayerRoughness *)"); + throw NotImplementedException("SampleMaterialVisitor::visit(const FormFactorParallelepiped *) -> Error. Not implemented."); } -void SampleMaterialVisitor::addMaterial(const IMaterial* p_material) + +void SampleMaterialVisitor::visit(const FormFactorPrism3 *) { - if (p_material && std::find(m_materials.begin(), m_materials.end(), - p_material) == m_materials.end() ) { - m_materials.push_back(p_material); - } + throw NotImplementedException("SampleMaterialVisitor::visit(const FormFactorPrism3 *) -> Error. Not implemented."); +} + + +void SampleMaterialVisitor::visit(const FormFactorPrism6 *) +{ + throw NotImplementedException("SampleMaterialVisitor::visit(const FormFactorPrism6 *) -> Error. Not implemented."); +} + + +void SampleMaterialVisitor::visit(const FormFactorPyramid *) +{ + throw NotImplementedException("SampleMaterialVisitor::visit(const FormFactorPyramid *) -> Error. Not implemented."); +} + + +void SampleMaterialVisitor::visit(const FormFactorSphere *) +{ + throw NotImplementedException("SampleMaterialVisitor::visit(const FormFactorSphere *) -> Error. Not implemented."); +} + + +void SampleMaterialVisitor::visit(const FormFactorSphereGaussianRadius *) +{ + throw NotImplementedException("SampleMaterialVisitor::visit(const FormFactorSphereGaussianRadius *) -> Error. Not implemented."); +} + + +void SampleMaterialVisitor::visit(const FormFactorTetrahedron *) +{ + throw NotImplementedException("SampleMaterialVisitor::visit(const FormFactorTetrahedron *) -> Error. Not implemented."); +} + + +void SampleMaterialVisitor::visit(const IFormFactorBornSeparable *) +{ + throw NotImplementedException("SampleMaterialVisitor::visit(const IFormFactorBornSeparable *) -> Error. Not implemented."); +} + + +void SampleMaterialVisitor::visit(const IFormFactorDecorator *) +{ + throw NotImplementedException("SampleMaterialVisitor::visit(const IFormFactorDecorator *) -> Error. Not implemented."); +} + + +void SampleMaterialVisitor::visit(const FormFactorDWBA *) +{ + throw NotImplementedException("SampleMaterialVisitor::visit(const FormFactorDWBA *) -> Error. Not implemented."); +} + + +void SampleMaterialVisitor::visit(const FormFactorDWBAConstZ *) +{ + throw NotImplementedException("SampleMaterialVisitor::visit(const FormFactorDWBAConstZ *) -> Error. Not implemented."); +} + + +void SampleMaterialVisitor::visit(const FormFactorDecoratorDebyeWaller *) +{ + throw NotImplementedException("SampleMaterialVisitor::visit(const FormFactorDecoratorDebyeWaller *) -> Error. Not implemented."); +} + + +void SampleMaterialVisitor::visit(const FormFactorDecoratorFactor *) +{ + throw NotImplementedException("SampleMaterialVisitor::visit(const FormFactorDecoratorFactor *) -> Error. Not implemented."); +} + + +void SampleMaterialVisitor::visit(const FormFactorDecoratorMaterial *) +{ + throw NotImplementedException("SampleMaterialVisitor::visit(const FormFactorDecoratorMaterial *) -> Error. Not implemented."); +} + + +void SampleMaterialVisitor::visit(const FormFactorDecoratorMultiPositionFactor *) +{ + throw NotImplementedException("SampleMaterialVisitor::visit(const FormFactorDecoratorMultiPositionFactor *) -> Error. Not implemented."); +} + + +void SampleMaterialVisitor::visit(const FormFactorDecoratorPositionFactor *) +{ + throw NotImplementedException("SampleMaterialVisitor::visit(const FormFactorDecoratorPositionFactor *) -> Error. Not implemented."); +} + + +void SampleMaterialVisitor::visit(const FormFactorDecoratorTransformation *) +{ + throw NotImplementedException("SampleMaterialVisitor::visit(const FormFactorDecoratorTransformation *) -> Error. Not implemented."); +} + + +void SampleMaterialVisitor::visit(const IInterferenceFunction *) +{ + throw NotImplementedException("SampleMaterialVisitor::visit(const IInterferenceFunction *) -> Error. Not implemented."); +} + + +void SampleMaterialVisitor::visit(const InterferenceFunction1DParaCrystal *){ + throw NotImplementedException("SampleMaterialVisitor::visit(const InterferenceFunction1DParaCrystal *) -> Error. Not implemented."); } + + +void SampleMaterialVisitor::visit(const InterferenceFunction2DLattice *) +{ + throw NotImplementedException("SampleMaterialVisitor::visit(const InterferenceFunction2DLattice *) -> Error. Not implemented."); +} + + +void SampleMaterialVisitor::visit(const InterferenceFunction2DParaCrystal *) +{ + throw NotImplementedException("SampleMaterialVisitor::visit(const InterferenceFunction2DParaCrystal *) -> Error. Not implemented."); +} + + +void SampleMaterialVisitor::visit(const InterferenceFunctionNone *) +{ + throw NotImplementedException("SampleMaterialVisitor::visit(const InterferenceFunctionNone *) -> Error. Not implemented."); +} + + +void SampleMaterialVisitor::visit(const IRoughness *) +{ + throw NotImplementedException("SampleMaterialVisitor::visit(const IRoughness *) -> Error. Not implemented."); +} + + +void SampleMaterialVisitor::visit(const LayerRoughness *) +{ + throw NotImplementedException("SampleMaterialVisitor::visit(const LayerRoughness *) -> Error. Not implemented."); +} + + + diff --git a/Core/Tools/src/SamplePrintVisitor.cpp b/Core/Tools/src/SamplePrintVisitor.cpp index 9f3c7076474..0342640f328 100644 --- a/Core/Tools/src/SamplePrintVisitor.cpp +++ b/Core/Tools/src/SamplePrintVisitor.cpp @@ -13,15 +13,359 @@ #include "MesoCrystal.h" -void SamplePrintVisitor::visit(const ISample *sample) +void SamplePrintVisitor::visit(const ISample *) +{ + throw NotImplementedException("SamplePrintVisitor::visit(const ISample *) -> Error. Not implemented."); +} + + +void SamplePrintVisitor::visit(const ICompositeSample *) +{ + throw NotImplementedException("SamplePrintVisitor::visit(const ICompositeSample *) -> Error. Not implemented."); +} + + +void SamplePrintVisitor::visit(const IClusteredParticles *) +{ + throw NotImplementedException("SamplePrintVisitor::visit(const IClusteredParticles *) -> Error. Not implemented."); +} + + +void SamplePrintVisitor::visit(const Crystal *) +{ + throw NotImplementedException("SamplePrintVisitor::visit(const Crystal *) -> Error. Not implemented."); +} + + +void SamplePrintVisitor::visit(const IDecoration *) +{ + throw NotImplementedException("SamplePrintVisitor::visit(const IDecoration *) -> Error. Not implemented."); +} + + +void SamplePrintVisitor::visit(const ParticleDecoration *sample) +{ + assert(sample); + std::cout << get_indent() << "ParticleDecoration " << sample->getName() + << " " << (*sample->getParameterPool()) + << std::endl; +} + + +void SamplePrintVisitor::visit(const Layer *sample) { assert(sample); - std::cout << get_indent() << "PrintVisitor_ISample " << sample->getName() + std::cout << get_indent() << sample->getName() + << " " << (sample->getMaterial() ? sample->getMaterial()->getName() : "0_MATERIAL") + << " " << sample->getRefractiveIndex() << " " << (*sample->getParameterPool()) << std::endl; } +void SamplePrintVisitor::visit(const LayerInterface *) +{ + throw NotImplementedException("SamplePrintVisitor::visit(const LayerInterface *) -> Error. Not implemented."); +} + + +void SamplePrintVisitor::visit(const MultiLayer *sample) +{ + assert(sample); + std::cout << "--------------------------------------------------------------------------------" << std::endl; + std::cout << get_indent() << sample->getName() + << " " << (*sample->getParameterPool()) + << std::endl; +} + + +void SamplePrintVisitor::visit(const Particle *) +{ + throw NotImplementedException("SamplePrintVisitor::visit(const Particle *) -> Error. Not implemented."); +} + + +void SamplePrintVisitor::visit(const LatticeBasis *) +{ + throw NotImplementedException("SamplePrintVisitor::visit(const LatticeBasis *) -> Error. Not implemented."); +} + + +void SamplePrintVisitor::visit(const MesoCrystal *) +{ + throw NotImplementedException("SamplePrintVisitor::visit(const MesoCrystal *) -> Error. Not implemented."); +} + + +void SamplePrintVisitor::visit(const ParticleCoreShell *) +{ + throw NotImplementedException("SamplePrintVisitor::visit(const ParticleCoreShell *) -> Error. Not implemented."); +} + + +void SamplePrintVisitor::visit(const ParticleInfo *) +{ + throw NotImplementedException("SamplePrintVisitor::visit(const ParticleInfo *) -> Error. Not implemented."); +} + + +void SamplePrintVisitor::visit(const DiffuseParticleInfo *) +{ + throw NotImplementedException("SamplePrintVisitor::visit(const DiffuseParticleInfo *) -> Error. Not implemented."); +} + + +void SamplePrintVisitor::visit(const PositionParticleInfo *) +{ + throw NotImplementedException("SamplePrintVisitor::visit(const PositionParticleInfo *) -> Error. Not implemented."); +} + + +void SamplePrintVisitor::visit(const IFormFactor *) +{ + throw NotImplementedException("SamplePrintVisitor::visit(const IFormFactor *) -> Error. Not implemented."); +} + + +void SamplePrintVisitor::visit(const FormFactorDWBAPol *) +{ + throw NotImplementedException("SamplePrintVisitor::visit(const FormFactorDWBAPol *) -> Error. Not implemented."); +} + + +void SamplePrintVisitor::visit(const FormFactorDWBAPolConstZ *) +{ + throw NotImplementedException("SamplePrintVisitor::visit(const FormFactorDWBAPolConstZ *) -> Error. Not implemented."); +} + + +void SamplePrintVisitor::visit(const FormFactorWeighted *) +{ + throw NotImplementedException("SamplePrintVisitor::visit(const FormFactorWeighted *) -> Error. Not implemented."); +} + + +void SamplePrintVisitor::visit(const IFormFactorBorn *) +{ + throw NotImplementedException("SamplePrintVisitor::visit(const IFormFactorBorn *) -> Error. Not implemented."); +} + + +void SamplePrintVisitor::visit(const FormFactorBox *) +{ + throw NotImplementedException("SamplePrintVisitor::visit(const FormFactorBox *) -> Error. Not implemented."); +} + + +void SamplePrintVisitor::visit(const FormFactorCone *) +{ + throw NotImplementedException("SamplePrintVisitor::visit(const FormFactorCone *) -> Error. Not implemented."); +} + + +void SamplePrintVisitor::visit(const FormFactorCone6 *) +{ + throw NotImplementedException("SamplePrintVisitor::visit(const FormFactorCone6 *) -> Error. Not implemented."); +} + + +void SamplePrintVisitor::visit(const FormFactorCrystal *) +{ + throw NotImplementedException("SamplePrintVisitor::visit(const FormFactorCrystal *) -> Error. Not implemented."); +} + + +void SamplePrintVisitor::visit(const FormFactorCylinder *) +{ + throw NotImplementedException("SamplePrintVisitor::visit(const FormFactorCylinder *) -> Error. Not implemented."); +} + + +void SamplePrintVisitor::visit(const FormFactorEllipsoid *) +{ + throw NotImplementedException("SamplePrintVisitor::visit(const FormFactorEllipsoid *) -> Error. Not implemented."); +} + + +void SamplePrintVisitor::visit(const FormFactorFullSphere *) +{ + throw NotImplementedException("SamplePrintVisitor::visit(const FormFactorFullSphere *) -> Error. Not implemented."); +} + + +void SamplePrintVisitor::visit(const FormFactorFullSpheroid *) +{ + throw NotImplementedException("SamplePrintVisitor::visit(const FormFactorFullSpheroid *) -> Error. Not implemented."); +} + + +void SamplePrintVisitor::visit(const FormFactorGauss *) +{ + throw NotImplementedException("SamplePrintVisitor::visit(const FormFactorGauss *) -> Error. Not implemented."); +} + + +void SamplePrintVisitor::visit(const FormFactorHemiSpheroid *) +{ + throw NotImplementedException("SamplePrintVisitor::visit const FormFactorHemiSpheroid *) -> Error. Not implemented."); +} + + +void SamplePrintVisitor::visit(const FormFactorLorentz *) +{ + throw NotImplementedException("SamplePrintVisitor::visit(const FormFactorLorentz *) -> Error. Not implemented."); +} + + +void SamplePrintVisitor::visit(const FormFactorParallelepiped *) +{ + throw NotImplementedException("SamplePrintVisitor::visit(const FormFactorParallelepiped *) -> Error. Not implemented."); +} + + +void SamplePrintVisitor::visit(const FormFactorPrism3 *) +{ + throw NotImplementedException("SamplePrintVisitor::visit(const FormFactorPrism3 *) -> Error. Not implemented."); +} + + +void SamplePrintVisitor::visit(const FormFactorPrism6 *) +{ + throw NotImplementedException("SamplePrintVisitor::visit(const FormFactorPrism6 *) -> Error. Not implemented."); +} + + +void SamplePrintVisitor::visit(const FormFactorPyramid *) +{ + throw NotImplementedException("SamplePrintVisitor::visit(const FormFactorPyramid *) -> Error. Not implemented."); +} + + +void SamplePrintVisitor::visit(const FormFactorSphere *) +{ + throw NotImplementedException("SamplePrintVisitor::visit(const FormFactorSphere *) -> Error. Not implemented."); +} + + +void SamplePrintVisitor::visit(const FormFactorSphereGaussianRadius *) +{ + throw NotImplementedException("SamplePrintVisitor::visit(const FormFactorSphereGaussianRadius *) -> Error. Not implemented."); +} + + +void SamplePrintVisitor::visit(const FormFactorTetrahedron *) +{ + throw NotImplementedException("SamplePrintVisitor::visit(const FormFactorTetrahedron *) -> Error. Not implemented."); +} + + +void SamplePrintVisitor::visit(const IFormFactorBornSeparable *) +{ + throw NotImplementedException("SamplePrintVisitor::visit(const IFormFactorBornSeparable *) -> Error. Not implemented."); +} + + +void SamplePrintVisitor::visit(const IFormFactorDecorator *) +{ + throw NotImplementedException("SamplePrintVisitor::visit(const IFormFactorDecorator *) -> Error. Not implemented."); +} + + +void SamplePrintVisitor::visit(const FormFactorDWBA *) +{ + throw NotImplementedException("SamplePrintVisitor::visit(const FormFactorDWBA *) -> Error. Not implemented."); +} + + +void SamplePrintVisitor::visit(const FormFactorDWBAConstZ *) +{ + throw NotImplementedException("SamplePrintVisitor::visit(const FormFactorDWBAConstZ *) -> Error. Not implemented."); +} + + +void SamplePrintVisitor::visit(const FormFactorDecoratorDebyeWaller *) +{ + throw NotImplementedException("SamplePrintVisitor::visit(const FormFactorDecoratorDebyeWaller *) -> Error. Not implemented."); +} + + +void SamplePrintVisitor::visit(const FormFactorDecoratorFactor *) +{ + throw NotImplementedException("SamplePrintVisitor::visit(const FormFactorDecoratorFactor *) -> Error. Not implemented."); +} + + +void SamplePrintVisitor::visit(const FormFactorDecoratorMaterial *) +{ + throw NotImplementedException("SamplePrintVisitor::visit(const FormFactorDecoratorMaterial *) -> Error. Not implemented."); +} + + +void SamplePrintVisitor::visit(const FormFactorDecoratorMultiPositionFactor *) +{ + throw NotImplementedException("SamplePrintVisitor::visit(const FormFactorDecoratorMultiPositionFactor *) -> Error. Not implemented."); +} + + +void SamplePrintVisitor::visit(const FormFactorDecoratorPositionFactor *) +{ + throw NotImplementedException("SamplePrintVisitor::visit(const FormFactorDecoratorPositionFactor *) -> Error. Not implemented."); +} + + +void SamplePrintVisitor::visit(const FormFactorDecoratorTransformation *) +{ + throw NotImplementedException("SamplePrintVisitor::visit(const FormFactorDecoratorTransformation *) -> Error. Not implemented."); +} + + +void SamplePrintVisitor::visit(const IInterferenceFunction *) +{ + throw NotImplementedException("SamplePrintVisitor::visit(const IInterferenceFunction *) -> Error. Not implemented."); +} + + +void SamplePrintVisitor::visit(const InterferenceFunction1DParaCrystal *){ + throw NotImplementedException("SamplePrintVisitor::visit(const InterferenceFunction1DParaCrystal *) -> Error. Not implemented."); +} + + +void SamplePrintVisitor::visit(const InterferenceFunction2DLattice *) +{ + throw NotImplementedException("SamplePrintVisitor::visit(const InterferenceFunction2DLattice *) -> Error. Not implemented."); +} + + +void SamplePrintVisitor::visit(const InterferenceFunction2DParaCrystal *) +{ + throw NotImplementedException("SamplePrintVisitor::visit(const InterferenceFunction2DParaCrystal *) -> Error. Not implemented."); +} + + +void SamplePrintVisitor::visit(const InterferenceFunctionNone *) +{ + throw NotImplementedException("SamplePrintVisitor::visit(const InterferenceFunctionNone *) -> Error. Not implemented."); +} + + +void SamplePrintVisitor::visit(const IRoughness *) +{ + throw NotImplementedException("SamplePrintVisitor::visit(const IRoughness *) -> Error. Not implemented."); +} + + +void SamplePrintVisitor::visit(const LayerRoughness *) +{ + throw NotImplementedException("SamplePrintVisitor::visit(const LayerRoughness *) -> Error. Not implemented."); +} + + + + +/* + + + void SamplePrintVisitor::visit(const MultiLayer *sample) { assert(sample); @@ -44,19 +388,6 @@ void SamplePrintVisitor::visit(const MultiLayer *sample) } -void SamplePrintVisitor::visit(const Layer *sample) -{ - assert(sample); - std::cout << get_indent() << "Layer " << sample->getName() - << " " << (sample->getMaterial() ? sample->getMaterial()->getName() : "0_MATERIAL") - << " " << sample->getRefractiveIndex() - << " " << (*sample->getParameterPool()) - << std::endl; - - const IDecoration *decoration = sample->getDecoration(); - if(decoration) decoration->accept(this); -} - void SamplePrintVisitor::visit(const LayerInterface *sample) { @@ -282,3 +613,7 @@ void SamplePrintVisitor::visit(const LayerRoughness *sample) } +*/ + + + -- GitLab