From ca0f8cf6a687023bab9c34687d74ca640635d2f5 Mon Sep 17 00:00:00 2001
From: "Joachim Wuttke (h)" <j.wuttke@fz-juelich.de>
Date: Sat, 28 Nov 2020 21:41:54 +0100
Subject: [PATCH] SampleToPython: Doxy com, rename fct and var and auxiliary
 class

---
 ...leLabelHandler.cpp => ModelKeyHandler.cpp} |  20 +-
 ...SampleLabelHandler.h => ModelKeyHandler.h} |  14 +-
 Core/Export/SampleToPython.cpp                |  36 +--
 Core/Export/SampleToPython.h                  |   4 +-
 auto/Wrap/doxygenCore.i                       | 127 +++------
 auto/Wrap/libBornAgainDevice_wrap.cpp         | 249 +++++++++++-------
 6 files changed, 222 insertions(+), 228 deletions(-)
 rename Core/Export/{SampleLabelHandler.cpp => ModelKeyHandler.cpp} (60%)
 rename Core/Export/{SampleLabelHandler.h => ModelKeyHandler.h} (74%)

diff --git a/Core/Export/SampleLabelHandler.cpp b/Core/Export/ModelKeyHandler.cpp
similarity index 60%
rename from Core/Export/SampleLabelHandler.cpp
rename to Core/Export/ModelKeyHandler.cpp
index d467bafab19..df118776a01 100644
--- a/Core/Export/SampleLabelHandler.cpp
+++ b/Core/Export/ModelKeyHandler.cpp
@@ -2,8 +2,8 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Export/SampleLabelHandler.cpp
-//! @brief     Implement class SampleLabelHandler.
+//! @file      Core/Export/ModelKeyHandler.cpp
+//! @brief     Implement class ModelKeyHandler.
 //!
 //! @homepage  http://www.bornagainproject.org
 //! @license   GNU General Public License v3 or higher (see COPYING)
@@ -12,25 +12,25 @@
 //
 //  ************************************************************************************************
 
-#include "Core/Export/SampleLabelHandler.h"
+#include "Core/Export/ModelKeyHandler.h"
 #include <algorithm>
 #include <set>
 #include <stdexcept>
 
-void SampleLabelHandler::insertKeyedObject(const std::string& key, const IModel* s) {
-    m_objects[key].emplace_back(s);
+void ModelKeyHandler::insertModel(const std::string& tag, const IModel* s) {
+    m_objects[tag].emplace_back(s);
 }
 
-std::string SampleLabelHandler::obj2key(const IModel* s) const {
+std::string ModelKeyHandler::obj2key(const IModel* s) const {
     for (auto it: m_objects) {
         const std::vector<const IModel*>& v = it.second;
         const auto vpos = std::find(v.begin(), v.end(), s);
         if (vpos == std::end(v))
             continue;
-        const std::string& key = it.first;
+        const std::string& tag = it.first;
         if (v.size() == 1)
-            return key;
-        return key + "_" + std::to_string(vpos - v.begin() + 1);
+            return tag;
+        return tag + "_" + std::to_string(vpos - v.begin() + 1);
     }
-    throw std::runtime_error("BUG: object not found in SampleLabelHandler");
+    throw std::runtime_error("BUG: object not found in ModelKeyHandler");
 }
diff --git a/Core/Export/SampleLabelHandler.h b/Core/Export/ModelKeyHandler.h
similarity index 74%
rename from Core/Export/SampleLabelHandler.h
rename to Core/Export/ModelKeyHandler.h
index 1b74143d3b9..7e640c792b4 100644
--- a/Core/Export/SampleLabelHandler.h
+++ b/Core/Export/ModelKeyHandler.h
@@ -2,8 +2,8 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Core/Export/SampleLabelHandler.h
-//! @brief     Defines classes LabelMap and SampleLabelHandler.
+//! @file      Core/Export/ModelKeyHandler.h
+//! @brief     Defines classes LabelMap and ModelKeyHandler.
 //!
 //! @homepage  http://www.bornagainproject.org
 //! @license   GNU General Public License v3 or higher (see COPYING)
@@ -21,14 +21,12 @@
 
 class IModel;
 
-//! The handler which construct labels for sample variables during python script generation.
+//! Stores IModel instances, associates them with given tag, and provides unique keys.
 //! @ingroup tools_internal
 
-class SampleLabelHandler {
+class ModelKeyHandler {
 public:
-    SampleLabelHandler() {}
-
-    void insertKeyedObject(const std::string& key, const IModel* s);
+    void insertModel(const std::string& tag, const IModel* s);
 
     template <class T> std::vector<const T*> objectsOfType() const;
     std::string obj2key(const IModel* s) const;
@@ -38,7 +36,7 @@ private:
 };
 
 
-template <class T> std::vector<const T*> SampleLabelHandler::objectsOfType() const {
+template <class T> std::vector<const T*> ModelKeyHandler::objectsOfType() const {
     std::vector<const T*> ret;
     for (auto it: m_objects)
         for (const IModel* s : it.second)
diff --git a/Core/Export/SampleToPython.cpp b/Core/Export/SampleToPython.cpp
index 7c7de1fe4ba..6b5d8237a11 100644
--- a/Core/Export/SampleToPython.cpp
+++ b/Core/Export/SampleToPython.cpp
@@ -18,7 +18,7 @@
 #include "Core/Export/INodeUtils.h"
 #include "Core/Export/PyFmt.h"
 #include "Core/Export/PyFmt2.h"
-#include "Core/Export/SampleLabelHandler.h"
+#include "Core/Export/ModelKeyHandler.h"
 #include "Param/Varia/ParameterUtils.h"
 #include "Sample/Aggregate/InterferenceFunctions.h"
 #include "Sample/Aggregate/ParticleLayout.h"
@@ -101,39 +101,39 @@ std::string SampleToPython::generateSampleCode(const MultiLayer& multilayer) {
 }
 
 void SampleToPython::initLabels(const MultiLayer& multilayer) {
-    m_objs.reset(new SampleLabelHandler());
+    m_objs.reset(new ModelKeyHandler());
 
-    m_objs->insertKeyedObject("sample", &multilayer);
+    m_objs->insertModel("sample", &multilayer);
     for (const auto* x : multilayer.containedMaterials())
-        m_objs->insertKeyedObject("mat_"+x->getName(), x);
+        m_objs->insertModel("mat_"+x->getName(), x);
     for (const auto* x : INodeUtils::AllDescendantsOfType<Layer>(multilayer))
-        m_objs->insertKeyedObject("layer", x);
+        m_objs->insertModel("layer", x);
     for (const auto* x : INodeUtils::AllDescendantsOfType<LayerRoughness>(multilayer))
-        m_objs->insertKeyedObject("roughness", x);
+        m_objs->insertModel("roughness", x);
     for (const auto* x : INodeUtils::AllDescendantsOfType<ParticleLayout>(multilayer))
-        m_objs->insertKeyedObject("layout", x);
+        m_objs->insertModel("layout", x);
     for (const auto* x : INodeUtils::AllDescendantsOfType<IFormFactor>(multilayer))
-        m_objs->insertKeyedObject("ff", x);
+        m_objs->insertModel("ff", x);
     for (const auto* x : INodeUtils::AllDescendantsOfType<IInterferenceFunction>(multilayer))
-        m_objs->insertKeyedObject("iff", x);
+        m_objs->insertModel("iff", x);
     for (const auto* x : INodeUtils::AllDescendantsOfType<Particle>(multilayer))
-        m_objs->insertKeyedObject("particle", x);
+        m_objs->insertModel("particle", x);
     for (const auto* x : INodeUtils::AllDescendantsOfType<ParticleComposition>(multilayer))
-        m_objs->insertKeyedObject("particle", x);
+        m_objs->insertModel("particle", x);
     for (const auto* x : INodeUtils::AllDescendantsOfType<ParticleCoreShell>(multilayer))
-        m_objs->insertKeyedObject("particle", x);
+        m_objs->insertModel("particle", x);
     for (const auto* x : INodeUtils::AllDescendantsOfType<MesoCrystal>(multilayer))
-        m_objs->insertKeyedObject("particle", x);
+        m_objs->insertModel("particle", x);
     for (const auto* x : INodeUtils::AllDescendantsOfType<ParticleDistribution>(multilayer))
-        m_objs->insertKeyedObject("particle_distrib", x);
+        m_objs->insertModel("particle_distrib", x);
     for (const auto* x : INodeUtils::AllDescendantsOfType<Lattice2D>(multilayer))
-        m_objs->insertKeyedObject("lattice", x);
+        m_objs->insertModel("lattice", x);
     for (const auto* x : INodeUtils::AllDescendantsOfType<Lattice3D>(multilayer))
-        m_objs->insertKeyedObject("lattice", x);
+        m_objs->insertModel("lattice", x);
     for (const auto* x : INodeUtils::AllDescendantsOfType<Crystal>(multilayer))
-        m_objs->insertKeyedObject("crystal", x);
+        m_objs->insertModel("crystal", x);
     for (const auto* x : INodeUtils::AllDescendantsOfType<IRotation>(multilayer))
-        m_objs->insertKeyedObject("rotation", x);
+        m_objs->insertModel("rotation", x);
 }
 
 SampleToPython::SampleToPython() = default;
diff --git a/Core/Export/SampleToPython.h b/Core/Export/SampleToPython.h
index 6a9b1aedafe..d7d5b820cc2 100644
--- a/Core/Export/SampleToPython.h
+++ b/Core/Export/SampleToPython.h
@@ -20,7 +20,7 @@
 
 class IParticle;
 class MultiLayer;
-class SampleLabelHandler;
+class ModelKeyHandler;
 
 //! Generates Python code snippet from domain (C++) objects representing sample construction.
 
@@ -51,7 +51,7 @@ private:
     std::string defineRoughnesses() const;
     std::string defineMultiLayers() const;
 
-    std::unique_ptr<SampleLabelHandler> m_objs;
+    std::unique_ptr<ModelKeyHandler> m_objs;
 };
 
 #endif // BORNAGAIN_CORE_EXPORT_SAMPLETOPYTHON_H
diff --git a/auto/Wrap/doxygenCore.i b/auto/Wrap/doxygenCore.i
index c6abf5110b2..0de88ef8917 100644
--- a/auto/Wrap/doxygenCore.i
+++ b/auto/Wrap/doxygenCore.i
@@ -1200,6 +1200,24 @@ user-defined weighting factors. Used linearly, no matter which norm is chosen.
 ";
 
 
+// File: classModelKeyHandler.xml
+%feature("docstring") ModelKeyHandler "
+
+Stores IModel instances, associates them with given tag, and provides unique keys.
+
+C++ includes: ModelKeyHandler.h
+";
+
+%feature("docstring")  ModelKeyHandler::insertModel "void ModelKeyHandler::insertModel(const std::string &tag, const IModel *s)
+";
+
+%feature("docstring")  ModelKeyHandler::objectsOfType "std::vector< const T * > ModelKeyHandler::objectsOfType() const
+";
+
+%feature("docstring")  ModelKeyHandler::obj2key "std::string ModelKeyHandler::obj2key(const IModel *s) const
+";
+
+
 // File: classMPISimulation.xml
 %feature("docstring") MPISimulation "";
 
@@ -1343,57 +1361,6 @@ Returns the total number of the intensity values in the simulation result.
 ";
 
 
-// File: classOrderedMap.xml
-%feature("docstring") OrderedMap "
-
-Ordered map which saves the order of insertion.
-
-C++ includes: OrderedMap.h
-";
-
-%feature("docstring")  OrderedMap::OrderedMap "OrderedMap< Key, Object >::OrderedMap()
-";
-
-%feature("docstring")  OrderedMap::~OrderedMap "virtual OrderedMap< Key, Object >::~OrderedMap()
-";
-
-%feature("docstring")  OrderedMap::clear "void OrderedMap< Key, Object >::clear()
-";
-
-%feature("docstring")  OrderedMap::begin "const_iterator OrderedMap< Key, Object >::begin() const
-";
-
-%feature("docstring")  OrderedMap::end "const_iterator OrderedMap< Key, Object >::end() const
-";
-
-%feature("docstring")  OrderedMap::begin "iterator OrderedMap< Key, Object >::begin()
-";
-
-%feature("docstring")  OrderedMap::end "iterator OrderedMap< Key, Object >::end()
-";
-
-%feature("docstring")  OrderedMap::size "size_t OrderedMap< Key, Object >::size() const
-";
-
-%feature("docstring")  OrderedMap::empty "bool OrderedMap< Key, Object >::empty() const
-";
-
-%feature("docstring")  OrderedMap::insert "void OrderedMap< Key, Object >::insert(const Key &key, const Object &object)
-";
-
-%feature("docstring")  OrderedMap::find "iterator OrderedMap< Key, Object >::find(const Key &key)
-";
-
-%feature("docstring")  OrderedMap::find "const_iterator OrderedMap< Key, Object >::find(const Key &key) const
-";
-
-%feature("docstring")  OrderedMap::erase "size_t OrderedMap< Key, Object >::erase(const Key &key)
-";
-
-%feature("docstring")  OrderedMap::value "const Object& OrderedMap< Key, Object >::value(const Key &key) const
-";
-
-
 // File: classOutputData.xml
 %feature("docstring") OutputData "";
 
@@ -1742,27 +1709,6 @@ boolean, defines if data uncertainties should be taken into account
 ";
 
 
-// File: classSampleLabelHandler.xml
-%feature("docstring") SampleLabelHandler "
-
-The handler which construct labels for sample variables during python script generation.
-
-C++ includes: SampleLabelHandler.h
-";
-
-%feature("docstring")  SampleLabelHandler::SampleLabelHandler "SampleLabelHandler::SampleLabelHandler()
-";
-
-%feature("docstring")  SampleLabelHandler::insertKeyedObject "void SampleLabelHandler::insertKeyedObject(const std::string &key, const IModel *s)
-";
-
-%feature("docstring")  SampleLabelHandler::objectsOfType "std::vector< const T * > SampleLabelHandler::objectsOfType() const
-";
-
-%feature("docstring")  SampleLabelHandler::obj2key "std::string SampleLabelHandler::obj2key(const IModel *s) const
-";
-
-
 // File: classSampleToPython.xml
 %feature("docstring") SampleToPython "
 
@@ -2176,43 +2122,43 @@ Returns default units to convert to.
 // File: namespace_0d19.xml
 
 
-// File: namespace_0d39.xml
+// File: namespace_0d38.xml
 
 
-// File: namespace_0d41.xml
+// File: namespace_0d40.xml
 
 
-// File: namespace_0d46.xml
+// File: namespace_0d45.xml
 
 
-// File: namespace_0d55.xml
+// File: namespace_0d54.xml
 
 
-// File: namespace_0d57.xml
+// File: namespace_0d56.xml
 
 
-// File: namespace_0d61.xml
+// File: namespace_0d60.xml
 
 
-// File: namespace_0d63.xml
+// File: namespace_0d62.xml
 
 
-// File: namespace_0d68.xml
+// File: namespace_0d67.xml
 
 
-// File: namespace_0d70.xml
+// File: namespace_0d69.xml
 
 
-// File: namespace_0d74.xml
+// File: namespace_0d73.xml
 
 
-// File: namespace_0d84.xml
+// File: namespace_0d83.xml
 
 
-// File: namespace_0d86.xml
+// File: namespace_0d85.xml
 
 
-// File: namespace_0d92.xml
+// File: namespace_0d91.xml
 
 
 // File: namespaceExportToPython.xml
@@ -2659,7 +2605,10 @@ Helper factory function to use in  GISASSimulation. Depending on the type of det
 // File: INodeUtils_8h.xml
 
 
-// File: OrderedMap_8h.xml
+// File: ModelKeyHandler_8cpp.xml
+
+
+// File: ModelKeyHandler_8h.xml
 
 
 // File: PyFmt_8cpp.xml
@@ -2680,12 +2629,6 @@ Helper factory function to use in  GISASSimulation. Depending on the type of det
 // File: PyFmtLimits_8h.xml
 
 
-// File: SampleLabelHandler_8cpp.xml
-
-
-// File: SampleLabelHandler_8h.xml
-
-
 // File: SampleToPython_8cpp.xml
 
 
diff --git a/auto/Wrap/libBornAgainDevice_wrap.cpp b/auto/Wrap/libBornAgainDevice_wrap.cpp
index 2eaf9ae9429..12b39e06e5f 100644
--- a/auto/Wrap/libBornAgainDevice_wrap.cpp
+++ b/auto/Wrap/libBornAgainDevice_wrap.cpp
@@ -3122,102 +3122,103 @@ namespace Swig {
 #define SWIGTYPE_p_IFootprintFactor swig_types[22]
 #define SWIGTYPE_p_IHistogram swig_types[23]
 #define SWIGTYPE_p_IIntensityFunction swig_types[24]
-#define SWIGTYPE_p_INode swig_types[25]
-#define SWIGTYPE_p_INodeVisitor swig_types[26]
-#define SWIGTYPE_p_IParameterized swig_types[27]
-#define SWIGTYPE_p_IPixel swig_types[28]
-#define SWIGTYPE_p_IRangedDistribution swig_types[29]
-#define SWIGTYPE_p_IResolutionFunction2D swig_types[30]
-#define SWIGTYPE_p_IShape2D swig_types[31]
-#define SWIGTYPE_p_IUnitConverter swig_types[32]
-#define SWIGTYPE_p_IVarianceFunction swig_types[33]
-#define SWIGTYPE_p_Instrument swig_types[34]
-#define SWIGTYPE_p_IntensityDataIOFactory swig_types[35]
-#define SWIGTYPE_p_IntensityFunctionLog swig_types[36]
-#define SWIGTYPE_p_IntensityFunctionSqrt swig_types[37]
-#define SWIGTYPE_p_IsGISAXSDetector swig_types[38]
-#define SWIGTYPE_p_Line swig_types[39]
-#define SWIGTYPE_p_OutputDataIteratorT_double_OutputDataT_double_t_t swig_types[40]
-#define SWIGTYPE_p_OutputDataIteratorT_double_const_OutputDataT_double_t_const_t swig_types[41]
-#define SWIGTYPE_p_OutputDataT_CumulativeValue_t swig_types[42]
-#define SWIGTYPE_p_OutputDataT_bool_t swig_types[43]
-#define SWIGTYPE_p_OutputDataT_double_t swig_types[44]
-#define SWIGTYPE_p_ParameterDistribution swig_types[45]
-#define SWIGTYPE_p_ParameterPool swig_types[46]
-#define SWIGTYPE_p_Polygon swig_types[47]
-#define SWIGTYPE_p_PolygonPrivate swig_types[48]
-#define SWIGTYPE_p_Rectangle swig_types[49]
-#define SWIGTYPE_p_RectangularDetector swig_types[50]
-#define SWIGTYPE_p_RectangularPixel swig_types[51]
-#define SWIGTYPE_p_RegionOfInterest swig_types[52]
-#define SWIGTYPE_p_ResolutionFunction2DGaussian swig_types[53]
-#define SWIGTYPE_p_ScanResolution swig_types[54]
-#define SWIGTYPE_p_SimulationResult swig_types[55]
-#define SWIGTYPE_p_SphericalDetector swig_types[56]
-#define SWIGTYPE_p_VarianceConstantFunction swig_types[57]
-#define SWIGTYPE_p_VarianceSimFunction swig_types[58]
-#define SWIGTYPE_p_VerticalLine swig_types[59]
-#define SWIGTYPE_p_allocator_type swig_types[60]
-#define SWIGTYPE_p_bool swig_types[61]
-#define SWIGTYPE_p_char swig_types[62]
-#define SWIGTYPE_p_const_iterator swig_types[63]
-#define SWIGTYPE_p_corr_matrix_t swig_types[64]
-#define SWIGTYPE_p_difference_type swig_types[65]
-#define SWIGTYPE_p_double swig_types[66]
-#define SWIGTYPE_p_first_type swig_types[67]
-#define SWIGTYPE_p_int swig_types[68]
-#define SWIGTYPE_p_iterator swig_types[69]
-#define SWIGTYPE_p_key_type swig_types[70]
-#define SWIGTYPE_p_long_long swig_types[71]
-#define SWIGTYPE_p_mapped_type swig_types[72]
-#define SWIGTYPE_p_p_PyObject swig_types[73]
-#define SWIGTYPE_p_parameters_t swig_types[74]
-#define SWIGTYPE_p_second_type swig_types[75]
-#define SWIGTYPE_p_short swig_types[76]
-#define SWIGTYPE_p_signed_char swig_types[77]
-#define SWIGTYPE_p_size_type swig_types[78]
-#define SWIGTYPE_p_std__allocatorT_BasicVector3DT_double_t_t swig_types[79]
-#define SWIGTYPE_p_std__allocatorT_BasicVector3DT_std__complexT_double_t_t_t swig_types[80]
-#define SWIGTYPE_p_std__allocatorT_double_t swig_types[81]
-#define SWIGTYPE_p_std__allocatorT_int_t swig_types[82]
-#define SWIGTYPE_p_std__allocatorT_std__complexT_double_t_t swig_types[83]
-#define SWIGTYPE_p_std__allocatorT_std__pairT_double_double_t_t swig_types[84]
-#define SWIGTYPE_p_std__allocatorT_std__pairT_std__string_const_double_t_t swig_types[85]
-#define SWIGTYPE_p_std__allocatorT_std__string_t swig_types[86]
-#define SWIGTYPE_p_std__allocatorT_std__vectorT_double_std__allocatorT_double_t_t_t swig_types[87]
-#define SWIGTYPE_p_std__allocatorT_std__vectorT_int_std__allocatorT_int_t_t_t swig_types[88]
-#define SWIGTYPE_p_std__allocatorT_unsigned_long_t swig_types[89]
-#define SWIGTYPE_p_std__complexT_double_t swig_types[90]
-#define SWIGTYPE_p_std__functionT_void_fSimulationAreaIterator_const_RF_t swig_types[91]
-#define SWIGTYPE_p_std__invalid_argument swig_types[92]
-#define SWIGTYPE_p_std__lessT_std__string_t swig_types[93]
-#define SWIGTYPE_p_std__mapT_Axes__Units_char_const_p_std__lessT_Axes__Units_t_std__allocatorT_std__pairT_Axes__Units_const_char_const_p_t_t_t swig_types[94]
-#define SWIGTYPE_p_std__mapT_std__string_double_std__lessT_std__string_t_std__allocatorT_std__pairT_std__string_const_double_t_t_t swig_types[95]
-#define SWIGTYPE_p_std__pairT_double_double_t swig_types[96]
-#define SWIGTYPE_p_std__vectorT_Axes__Units_std__allocatorT_Axes__Units_t_t swig_types[97]
-#define SWIGTYPE_p_std__vectorT_AxisInfo_std__allocatorT_AxisInfo_t_t swig_types[98]
-#define SWIGTYPE_p_std__vectorT_BasicVector3DT_double_t_std__allocatorT_BasicVector3DT_double_t_t_t swig_types[99]
-#define SWIGTYPE_p_std__vectorT_BasicVector3DT_std__complexT_double_t_t_std__allocatorT_BasicVector3DT_std__complexT_double_t_t_t_t swig_types[100]
-#define SWIGTYPE_p_std__vectorT_INode_const_p_std__allocatorT_INode_const_p_t_t swig_types[101]
-#define SWIGTYPE_p_std__vectorT_SimulationElement_std__allocatorT_SimulationElement_t_t swig_types[102]
-#define SWIGTYPE_p_std__vectorT_double_std__allocatorT_double_t_t swig_types[103]
-#define SWIGTYPE_p_std__vectorT_int_std__allocatorT_int_t_t swig_types[104]
-#define SWIGTYPE_p_std__vectorT_size_t_std__allocatorT_size_t_t_t swig_types[105]
-#define SWIGTYPE_p_std__vectorT_std__complexT_double_t_std__allocatorT_std__complexT_double_t_t_t swig_types[106]
-#define SWIGTYPE_p_std__vectorT_std__pairT_double_double_t_std__allocatorT_std__pairT_double_double_t_t_t swig_types[107]
-#define SWIGTYPE_p_std__vectorT_std__string_std__allocatorT_std__string_t_t swig_types[108]
-#define SWIGTYPE_p_std__vectorT_std__vectorT_double_std__allocatorT_double_t_t_std__allocatorT_std__vectorT_double_std__allocatorT_double_t_t_t_t swig_types[109]
-#define SWIGTYPE_p_std__vectorT_std__vectorT_int_std__allocatorT_int_t_t_std__allocatorT_std__vectorT_int_std__allocatorT_int_t_t_t_t swig_types[110]
-#define SWIGTYPE_p_std__vectorT_unsigned_int_std__allocatorT_unsigned_int_t_t swig_types[111]
-#define SWIGTYPE_p_std__vectorT_unsigned_long_std__allocatorT_unsigned_long_t_t swig_types[112]
-#define SWIGTYPE_p_swig__SwigPyIterator swig_types[113]
-#define SWIGTYPE_p_unsigned_char swig_types[114]
-#define SWIGTYPE_p_unsigned_int swig_types[115]
-#define SWIGTYPE_p_unsigned_long_long swig_types[116]
-#define SWIGTYPE_p_unsigned_short swig_types[117]
-#define SWIGTYPE_p_value_type swig_types[118]
-static swig_type_info *swig_types[120];
-static swig_module_info swig_module = {swig_types, 119, 0, 0, 0, 0};
+#define SWIGTYPE_p_IModel swig_types[25]
+#define SWIGTYPE_p_INode swig_types[26]
+#define SWIGTYPE_p_INodeVisitor swig_types[27]
+#define SWIGTYPE_p_IParameterized swig_types[28]
+#define SWIGTYPE_p_IPixel swig_types[29]
+#define SWIGTYPE_p_IRangedDistribution swig_types[30]
+#define SWIGTYPE_p_IResolutionFunction2D swig_types[31]
+#define SWIGTYPE_p_IShape2D swig_types[32]
+#define SWIGTYPE_p_IUnitConverter swig_types[33]
+#define SWIGTYPE_p_IVarianceFunction swig_types[34]
+#define SWIGTYPE_p_Instrument swig_types[35]
+#define SWIGTYPE_p_IntensityDataIOFactory swig_types[36]
+#define SWIGTYPE_p_IntensityFunctionLog swig_types[37]
+#define SWIGTYPE_p_IntensityFunctionSqrt swig_types[38]
+#define SWIGTYPE_p_IsGISAXSDetector swig_types[39]
+#define SWIGTYPE_p_Line swig_types[40]
+#define SWIGTYPE_p_OutputDataIteratorT_double_OutputDataT_double_t_t swig_types[41]
+#define SWIGTYPE_p_OutputDataIteratorT_double_const_OutputDataT_double_t_const_t swig_types[42]
+#define SWIGTYPE_p_OutputDataT_CumulativeValue_t swig_types[43]
+#define SWIGTYPE_p_OutputDataT_bool_t swig_types[44]
+#define SWIGTYPE_p_OutputDataT_double_t swig_types[45]
+#define SWIGTYPE_p_ParameterDistribution swig_types[46]
+#define SWIGTYPE_p_ParameterPool swig_types[47]
+#define SWIGTYPE_p_Polygon swig_types[48]
+#define SWIGTYPE_p_PolygonPrivate swig_types[49]
+#define SWIGTYPE_p_Rectangle swig_types[50]
+#define SWIGTYPE_p_RectangularDetector swig_types[51]
+#define SWIGTYPE_p_RectangularPixel swig_types[52]
+#define SWIGTYPE_p_RegionOfInterest swig_types[53]
+#define SWIGTYPE_p_ResolutionFunction2DGaussian swig_types[54]
+#define SWIGTYPE_p_ScanResolution swig_types[55]
+#define SWIGTYPE_p_SimulationResult swig_types[56]
+#define SWIGTYPE_p_SphericalDetector swig_types[57]
+#define SWIGTYPE_p_VarianceConstantFunction swig_types[58]
+#define SWIGTYPE_p_VarianceSimFunction swig_types[59]
+#define SWIGTYPE_p_VerticalLine swig_types[60]
+#define SWIGTYPE_p_allocator_type swig_types[61]
+#define SWIGTYPE_p_bool swig_types[62]
+#define SWIGTYPE_p_char swig_types[63]
+#define SWIGTYPE_p_const_iterator swig_types[64]
+#define SWIGTYPE_p_corr_matrix_t swig_types[65]
+#define SWIGTYPE_p_difference_type swig_types[66]
+#define SWIGTYPE_p_double swig_types[67]
+#define SWIGTYPE_p_first_type swig_types[68]
+#define SWIGTYPE_p_int swig_types[69]
+#define SWIGTYPE_p_iterator swig_types[70]
+#define SWIGTYPE_p_key_type swig_types[71]
+#define SWIGTYPE_p_long_long swig_types[72]
+#define SWIGTYPE_p_mapped_type swig_types[73]
+#define SWIGTYPE_p_p_PyObject swig_types[74]
+#define SWIGTYPE_p_parameters_t swig_types[75]
+#define SWIGTYPE_p_second_type swig_types[76]
+#define SWIGTYPE_p_short swig_types[77]
+#define SWIGTYPE_p_signed_char swig_types[78]
+#define SWIGTYPE_p_size_type swig_types[79]
+#define SWIGTYPE_p_std__allocatorT_BasicVector3DT_double_t_t swig_types[80]
+#define SWIGTYPE_p_std__allocatorT_BasicVector3DT_std__complexT_double_t_t_t swig_types[81]
+#define SWIGTYPE_p_std__allocatorT_double_t swig_types[82]
+#define SWIGTYPE_p_std__allocatorT_int_t swig_types[83]
+#define SWIGTYPE_p_std__allocatorT_std__complexT_double_t_t swig_types[84]
+#define SWIGTYPE_p_std__allocatorT_std__pairT_double_double_t_t swig_types[85]
+#define SWIGTYPE_p_std__allocatorT_std__pairT_std__string_const_double_t_t swig_types[86]
+#define SWIGTYPE_p_std__allocatorT_std__string_t swig_types[87]
+#define SWIGTYPE_p_std__allocatorT_std__vectorT_double_std__allocatorT_double_t_t_t swig_types[88]
+#define SWIGTYPE_p_std__allocatorT_std__vectorT_int_std__allocatorT_int_t_t_t swig_types[89]
+#define SWIGTYPE_p_std__allocatorT_unsigned_long_t swig_types[90]
+#define SWIGTYPE_p_std__complexT_double_t swig_types[91]
+#define SWIGTYPE_p_std__functionT_void_fSimulationAreaIterator_const_RF_t swig_types[92]
+#define SWIGTYPE_p_std__invalid_argument swig_types[93]
+#define SWIGTYPE_p_std__lessT_std__string_t swig_types[94]
+#define SWIGTYPE_p_std__mapT_Axes__Units_char_const_p_std__lessT_Axes__Units_t_std__allocatorT_std__pairT_Axes__Units_const_char_const_p_t_t_t swig_types[95]
+#define SWIGTYPE_p_std__mapT_std__string_double_std__lessT_std__string_t_std__allocatorT_std__pairT_std__string_const_double_t_t_t swig_types[96]
+#define SWIGTYPE_p_std__pairT_double_double_t swig_types[97]
+#define SWIGTYPE_p_std__vectorT_Axes__Units_std__allocatorT_Axes__Units_t_t swig_types[98]
+#define SWIGTYPE_p_std__vectorT_AxisInfo_std__allocatorT_AxisInfo_t_t swig_types[99]
+#define SWIGTYPE_p_std__vectorT_BasicVector3DT_double_t_std__allocatorT_BasicVector3DT_double_t_t_t swig_types[100]
+#define SWIGTYPE_p_std__vectorT_BasicVector3DT_std__complexT_double_t_t_std__allocatorT_BasicVector3DT_std__complexT_double_t_t_t_t swig_types[101]
+#define SWIGTYPE_p_std__vectorT_INode_const_p_std__allocatorT_INode_const_p_t_t swig_types[102]
+#define SWIGTYPE_p_std__vectorT_SimulationElement_std__allocatorT_SimulationElement_t_t swig_types[103]
+#define SWIGTYPE_p_std__vectorT_double_std__allocatorT_double_t_t swig_types[104]
+#define SWIGTYPE_p_std__vectorT_int_std__allocatorT_int_t_t swig_types[105]
+#define SWIGTYPE_p_std__vectorT_size_t_std__allocatorT_size_t_t_t swig_types[106]
+#define SWIGTYPE_p_std__vectorT_std__complexT_double_t_std__allocatorT_std__complexT_double_t_t_t swig_types[107]
+#define SWIGTYPE_p_std__vectorT_std__pairT_double_double_t_std__allocatorT_std__pairT_double_double_t_t_t swig_types[108]
+#define SWIGTYPE_p_std__vectorT_std__string_std__allocatorT_std__string_t_t swig_types[109]
+#define SWIGTYPE_p_std__vectorT_std__vectorT_double_std__allocatorT_double_t_t_std__allocatorT_std__vectorT_double_std__allocatorT_double_t_t_t_t swig_types[110]
+#define SWIGTYPE_p_std__vectorT_std__vectorT_int_std__allocatorT_int_t_t_std__allocatorT_std__vectorT_int_std__allocatorT_int_t_t_t_t swig_types[111]
+#define SWIGTYPE_p_std__vectorT_unsigned_int_std__allocatorT_unsigned_int_t_t swig_types[112]
+#define SWIGTYPE_p_std__vectorT_unsigned_long_std__allocatorT_unsigned_long_t_t swig_types[113]
+#define SWIGTYPE_p_swig__SwigPyIterator swig_types[114]
+#define SWIGTYPE_p_unsigned_char swig_types[115]
+#define SWIGTYPE_p_unsigned_int swig_types[116]
+#define SWIGTYPE_p_unsigned_long_long swig_types[117]
+#define SWIGTYPE_p_unsigned_short swig_types[118]
+#define SWIGTYPE_p_value_type swig_types[119]
+static swig_type_info *swig_types[121];
+static swig_module_info swig_module = {swig_types, 120, 0, 0, 0, 0};
 #define SWIG_TypeQuery(name) SWIG_TypeQueryModule(&swig_module, &swig_module, name)
 #define SWIG_MangledTypeQuery(name) SWIG_MangledTypeQueryModule(&swig_module, &swig_module, name)
 
@@ -48868,6 +48869,54 @@ static void *_p_IResolutionFunction2DTo_p_ICloneable(void *x, int *SWIGUNUSEDPAR
 static void *_p_LineTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ICloneable *) (IShape2D *) ((Line *) x));
 }
+static void *_p_FootprintGaussTo_p_IModel(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((IModel *) (IParameterized *)(INode *)(IFootprintFactor *) ((FootprintGauss *) x));
+}
+static void *_p_IDetectorResolutionTo_p_IModel(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((IModel *) (IParameterized *)(INode *) ((IDetectorResolution *) x));
+}
+static void *_p_IDetector2DTo_p_IModel(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((IModel *) (IParameterized *)(INode *)(IDetector *) ((IDetector2D *) x));
+}
+static void *_p_INodeTo_p_IModel(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((IModel *) (IParameterized *) ((INode *) x));
+}
+static void *_p_ResolutionFunction2DGaussianTo_p_IModel(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((IModel *) (IParameterized *)(INode *)(IResolutionFunction2D *) ((ResolutionFunction2DGaussian *) x));
+}
+static void *_p_IFootprintFactorTo_p_IModel(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((IModel *) (IParameterized *)(INode *) ((IFootprintFactor *) x));
+}
+static void *_p_InstrumentTo_p_IModel(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((IModel *) (IParameterized *)(INode *) ((Instrument *) x));
+}
+static void *_p_BeamTo_p_IModel(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((IModel *) (IParameterized *)(INode *) ((Beam *) x));
+}
+static void *_p_RectangularDetectorTo_p_IModel(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((IModel *) (IParameterized *)(INode *)(IDetector *)(IDetector2D *) ((RectangularDetector *) x));
+}
+static void *_p_IDetectorTo_p_IModel(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((IModel *) (IParameterized *)(INode *) ((IDetector *) x));
+}
+static void *_p_SphericalDetectorTo_p_IModel(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((IModel *) (IParameterized *)(INode *)(IDetector *)(IDetector2D *) ((SphericalDetector *) x));
+}
+static void *_p_IsGISAXSDetectorTo_p_IModel(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((IModel *) (IParameterized *)(INode *)(IDetector *)(IDetector2D *)(SphericalDetector *) ((IsGISAXSDetector *) x));
+}
+static void *_p_ParameterDistributionTo_p_IModel(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((IModel *) (IParameterized *) ((ParameterDistribution *) x));
+}
+static void *_p_FootprintSquareTo_p_IModel(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((IModel *) (IParameterized *)(INode *)(IFootprintFactor *) ((FootprintSquare *) x));
+}
+static void *_p_IParameterizedTo_p_IModel(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((IModel *)  ((IParameterized *) x));
+}
+static void *_p_IResolutionFunction2DTo_p_IModel(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((IModel *) (IParameterized *)(INode *) ((IResolutionFunction2D *) x));
+}
 static void *_p_FootprintSquareTo_p_INode(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((INode *) (IFootprintFactor *) ((FootprintSquare *) x));
 }
@@ -48996,10 +49045,11 @@ static swig_type_info _swigt__p_IDetectorResolution = {"_p_IDetectorResolution",
 static swig_type_info _swigt__p_IFootprintFactor = {"_p_IFootprintFactor", "IFootprintFactor *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_IHistogram = {"_p_IHistogram", "IHistogram *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_IIntensityFunction = {"_p_IIntensityFunction", "IIntensityFunction *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_IModel = {"_p_IModel", "IModel *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_ParameterDistribution = {"_p_ParameterDistribution", 0, 0, 0, 0, 0};
 static swig_type_info _swigt__p_INode = {"_p_INode", "INode *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_INodeVisitor = {"_p_INodeVisitor", "INodeVisitor *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_IParameterized = {"_p_IParameterized", "IParameterized *", 0, 0, (void*)0, 0};
-static swig_type_info _swigt__p_ParameterDistribution = {"_p_ParameterDistribution", 0, 0, 0, 0, 0};
 static swig_type_info _swigt__p_IPixel = {"_p_IPixel", "IPixel *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_IRangedDistribution = {"_p_IRangedDistribution", "IRangedDistribution *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_IResolutionFunction2D = {"_p_IResolutionFunction2D", "IResolutionFunction2D *", 0, 0, (void*)0, 0};
@@ -49116,6 +49166,7 @@ static swig_type_info *swig_type_initial[] = {
   &_swigt__p_IFootprintFactor,
   &_swigt__p_IHistogram,
   &_swigt__p_IIntensityFunction,
+  &_swigt__p_IModel,
   &_swigt__p_INode,
   &_swigt__p_INodeVisitor,
   &_swigt__p_IParameterized,
@@ -49238,9 +49289,10 @@ static swig_cast_info _swigc__p_IDetectorResolution[] = {  {&_swigt__p_IDetector
 static swig_cast_info _swigc__p_IFootprintFactor[] = {  {&_swigt__p_FootprintSquare, _p_FootprintSquareTo_p_IFootprintFactor, 0, 0},  {&_swigt__p_IFootprintFactor, 0, 0, 0},  {&_swigt__p_FootprintGauss, _p_FootprintGaussTo_p_IFootprintFactor, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_IHistogram[] = {  {&_swigt__p_IHistogram, 0, 0, 0},  {&_swigt__p_Histogram2D, _p_Histogram2DTo_p_IHistogram, 0, 0},  {&_swigt__p_Histogram1D, _p_Histogram1DTo_p_IHistogram, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_IIntensityFunction[] = {  {&_swigt__p_IntensityFunctionSqrt, _p_IntensityFunctionSqrtTo_p_IIntensityFunction, 0, 0},  {&_swigt__p_IIntensityFunction, 0, 0, 0},  {&_swigt__p_IntensityFunctionLog, _p_IntensityFunctionLogTo_p_IIntensityFunction, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_ParameterDistribution[] = {{&_swigt__p_ParameterDistribution, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_IModel[] = {  {&_swigt__p_Beam, _p_BeamTo_p_IModel, 0, 0},  {&_swigt__p_FootprintGauss, _p_FootprintGaussTo_p_IModel, 0, 0},  {&_swigt__p_IModel, 0, 0, 0},  {&_swigt__p_IDetectorResolution, _p_IDetectorResolutionTo_p_IModel, 0, 0},  {&_swigt__p_IDetector2D, _p_IDetector2DTo_p_IModel, 0, 0},  {&_swigt__p_ResolutionFunction2DGaussian, _p_ResolutionFunction2DGaussianTo_p_IModel, 0, 0},  {&_swigt__p_IFootprintFactor, _p_IFootprintFactorTo_p_IModel, 0, 0},  {&_swigt__p_Instrument, _p_InstrumentTo_p_IModel, 0, 0},  {&_swigt__p_IDetector, _p_IDetectorTo_p_IModel, 0, 0},  {&_swigt__p_IsGISAXSDetector, _p_IsGISAXSDetectorTo_p_IModel, 0, 0},  {&_swigt__p_SphericalDetector, _p_SphericalDetectorTo_p_IModel, 0, 0},  {&_swigt__p_RectangularDetector, _p_RectangularDetectorTo_p_IModel, 0, 0},  {&_swigt__p_ParameterDistribution, _p_ParameterDistributionTo_p_IModel, 0, 0},  {&_swigt__p_FootprintSquare, _p_FootprintSquareTo_p_IModel, 0, 0},  {&_swigt__p_INode, _p_INodeTo_p_IModel, 0, 0},  {&_swigt__p_IResolutionFunction2D, _p_IResolutionFunction2DTo_p_IModel, 0, 0},  {&_swigt__p_IParameterized, _p_IParameterizedTo_p_IModel, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_INode[] = {  {&_swigt__p_Beam, _p_BeamTo_p_INode, 0, 0},  {&_swigt__p_FootprintGauss, _p_FootprintGaussTo_p_INode, 0, 0},  {&_swigt__p_IDetectorResolution, _p_IDetectorResolutionTo_p_INode, 0, 0},  {&_swigt__p_IDetector2D, _p_IDetector2DTo_p_INode, 0, 0},  {&_swigt__p_ResolutionFunction2DGaussian, _p_ResolutionFunction2DGaussianTo_p_INode, 0, 0},  {&_swigt__p_IFootprintFactor, _p_IFootprintFactorTo_p_INode, 0, 0},  {&_swigt__p_Instrument, _p_InstrumentTo_p_INode, 0, 0},  {&_swigt__p_IDetector, _p_IDetectorTo_p_INode, 0, 0},  {&_swigt__p_IsGISAXSDetector, _p_IsGISAXSDetectorTo_p_INode, 0, 0},  {&_swigt__p_SphericalDetector, _p_SphericalDetectorTo_p_INode, 0, 0},  {&_swigt__p_RectangularDetector, _p_RectangularDetectorTo_p_INode, 0, 0},  {&_swigt__p_FootprintSquare, _p_FootprintSquareTo_p_INode, 0, 0},  {&_swigt__p_IResolutionFunction2D, _p_IResolutionFunction2DTo_p_INode, 0, 0},  {&_swigt__p_INode, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_INodeVisitor[] = {  {&_swigt__p_INodeVisitor, 0, 0, 0},{0, 0, 0, 0}};
-static swig_cast_info _swigc__p_ParameterDistribution[] = {{&_swigt__p_ParameterDistribution, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_IParameterized[] = {  {&_swigt__p_Beam, _p_BeamTo_p_IParameterized, 0, 0},  {&_swigt__p_FootprintGauss, _p_FootprintGaussTo_p_IParameterized, 0, 0},  {&_swigt__p_IDetectorResolution, _p_IDetectorResolutionTo_p_IParameterized, 0, 0},  {&_swigt__p_IDetector2D, _p_IDetector2DTo_p_IParameterized, 0, 0},  {&_swigt__p_ResolutionFunction2DGaussian, _p_ResolutionFunction2DGaussianTo_p_IParameterized, 0, 0},  {&_swigt__p_IFootprintFactor, _p_IFootprintFactorTo_p_IParameterized, 0, 0},  {&_swigt__p_Instrument, _p_InstrumentTo_p_IParameterized, 0, 0},  {&_swigt__p_IDetector, _p_IDetectorTo_p_IParameterized, 0, 0},  {&_swigt__p_IsGISAXSDetector, _p_IsGISAXSDetectorTo_p_IParameterized, 0, 0},  {&_swigt__p_SphericalDetector, _p_SphericalDetectorTo_p_IParameterized, 0, 0},  {&_swigt__p_RectangularDetector, _p_RectangularDetectorTo_p_IParameterized, 0, 0},  {&_swigt__p_ParameterDistribution, _p_ParameterDistributionTo_p_IParameterized, 0, 0},  {&_swigt__p_FootprintSquare, _p_FootprintSquareTo_p_IParameterized, 0, 0},  {&_swigt__p_IParameterized, 0, 0, 0},  {&_swigt__p_INode, _p_INodeTo_p_IParameterized, 0, 0},  {&_swigt__p_IResolutionFunction2D, _p_IResolutionFunction2DTo_p_IParameterized, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_IPixel[] = {  {&_swigt__p_IPixel, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_IRangedDistribution[] = {  {&_swigt__p_IRangedDistribution, 0, 0, 0},{0, 0, 0, 0}};
@@ -49358,6 +49410,7 @@ static swig_cast_info *swig_cast_initial[] = {
   _swigc__p_IFootprintFactor,
   _swigc__p_IHistogram,
   _swigc__p_IIntensityFunction,
+  _swigc__p_IModel,
   _swigc__p_INode,
   _swigc__p_INodeVisitor,
   _swigc__p_IParameterized,
-- 
GitLab