diff --git a/Core/Computation/DWBAComputation.cpp b/Core/Computation/DWBAComputation.cpp index 5680edfeb473833a66afcdbf1c71bc560f1efb0a..49a9972b654af7521e2935294588be8c6d3309f7 100644 --- a/Core/Computation/DWBAComputation.cpp +++ b/Core/Computation/DWBAComputation.cpp @@ -40,21 +40,19 @@ makeLayoutComputation(const std::vector<ProcessedLayout>& layouts, const Simulat } // namespace -DWBAComputation::DWBAComputation(std::unique_ptr<const ProcessedSample>&& re_sample, - const SimulationOptions& options, ProgressHandler& progress, +DWBAComputation::DWBAComputation(const ProcessedSample& re_sample, const SimulationOptions& options, + ProgressHandler& progress, std::vector<DiffuseElement>::iterator begin_it, std::vector<DiffuseElement>::iterator end_it) - : IComputation(std::move(re_sample), options, progress) + : IComputation(re_sample, options, progress) , m_begin_it(begin_it) , m_end_it(end_it) - , m_fresnel_map(m_re_sample->fresnelMap()) + , m_fresnel_map(m_re_sample.fresnelMap()) , m_specular_contrib(options.includeSpecular() ? new GISASSpecularContribution() : nullptr) - , m_roughness_contrib(m_re_sample->hasRoughness() - ? new RoughMultiLayerContribution(*m_re_sample) - : nullptr) - , m_layout_contribs( - makeLayoutComputation(m_re_sample->layouts(), options, - m_re_sample->containsMagneticMaterial())) + , m_roughness_contrib(m_re_sample.hasRoughness() ? new RoughMultiLayerContribution(m_re_sample) + : nullptr) + , m_layout_contribs(makeLayoutComputation(m_re_sample.layouts(), options, + m_re_sample.containsMagneticMaterial())) { } diff --git a/Core/Computation/DWBAComputation.h b/Core/Computation/DWBAComputation.h index bd8580a60859e5720988cf47d2bd430ed97ef0a5..00a6c36a8b899c4242436f170e224974ccc873d5 100644 --- a/Core/Computation/DWBAComputation.h +++ b/Core/Computation/DWBAComputation.h @@ -42,9 +42,8 @@ class SimulationOptions; class DWBAComputation : public IComputation { public: - DWBAComputation(std::unique_ptr<const ProcessedSample>&& re_sample, - const SimulationOptions& options, ProgressHandler& progress, - std::vector<DiffuseElement>::iterator begin_it, + DWBAComputation(const ProcessedSample& re_sample, const SimulationOptions& options, + ProgressHandler& progress, std::vector<DiffuseElement>::iterator begin_it, std::vector<DiffuseElement>::iterator end_it); ~DWBAComputation() override; diff --git a/Core/Computation/DepthProbeComputation.cpp b/Core/Computation/DepthProbeComputation.cpp index 485b6de88e4712b241c5e4afc2d91742652a56ac..18ed1a910c562edd68a4cbdbe24e09764600b830 100644 --- a/Core/Computation/DepthProbeComputation.cpp +++ b/Core/Computation/DepthProbeComputation.cpp @@ -20,14 +20,12 @@ #include "Resample/Fresnel/IFresnelMap.h" #include "Resample/Processed/ProcessedSample.h" -DepthProbeComputation::DepthProbeComputation(std::unique_ptr<const ProcessedSample>&& re_sample, +DepthProbeComputation::DepthProbeComputation(const ProcessedSample& re_sample, const SimulationOptions& options, ProgressHandler& progress, DepthProbeElementIter begin_it, DepthProbeElementIter end_it) - : IComputation(std::move(re_sample), options, progress) - , m_begin_it(begin_it) - , m_end_it(end_it) + : IComputation(re_sample, options, progress), m_begin_it(begin_it), m_end_it(end_it) { } @@ -42,18 +40,18 @@ void DepthProbeComputation::runProtected() const IAxis& z_positions = *ele.getZPositions(); const size_t n_z = z_positions.size(); - const size_t n_layers = m_re_sample->numberOfSlices(); + const size_t n_layers = m_re_sample.numberOfSlices(); size_t start_z_ind = n_z; std::valarray<double> intensities(0.0, n_z); double z_layer_bottom(0.0); double z_layer_top(0.0); for (size_t i_layer = 0; i_layer < n_layers && start_z_ind != 0; ++i_layer) { - z_layer_bottom = m_re_sample->sliceBottomZ(i_layer); - z_layer_top = i_layer ? m_re_sample->sliceTopZ(i_layer) : 0; + z_layer_bottom = m_re_sample.sliceBottomZ(i_layer); + z_layer_top = i_layer ? m_re_sample.sliceTopZ(i_layer) : 0; // get R & T coefficients for current layer - const auto flux = m_re_sample->fresnelMap()->getInFlux(ele.getKi(), i_layer); + const auto flux = m_re_sample.fresnelMap()->getInFlux(ele.getKi(), i_layer); const complex_t R = flux->getScalarR(); const complex_t T = flux->getScalarT(); const complex_t kz_out = flux->getScalarKz(); diff --git a/Core/Computation/DepthProbeComputation.h b/Core/Computation/DepthProbeComputation.h index 8a234494c5b8e875ed27139a546e7e2b07ba3600..cf3cf466665b9a5382f77cb18c11366adce5b04e 100644 --- a/Core/Computation/DepthProbeComputation.h +++ b/Core/Computation/DepthProbeComputation.h @@ -33,9 +33,9 @@ class DepthProbeComputation : public IComputation { using DepthProbeElementIter = std::vector<DepthProbeElement>::iterator; public: - DepthProbeComputation(std::unique_ptr<const ProcessedSample>&& re_sample, - const SimulationOptions& options, ProgressHandler& progress, - DepthProbeElementIter begin_it, DepthProbeElementIter end_it); + DepthProbeComputation(const ProcessedSample& re_sample, const SimulationOptions& options, + ProgressHandler& progress, DepthProbeElementIter begin_it, + DepthProbeElementIter end_it); ~DepthProbeComputation() override; private: diff --git a/Core/Computation/IComputation.cpp b/Core/Computation/IComputation.cpp index 76f093650ce11be222ff78f34675382e6ba4af61..5e2456d220b73522ad6099127f87843a9a8c76fc 100644 --- a/Core/Computation/IComputation.cpp +++ b/Core/Computation/IComputation.cpp @@ -17,9 +17,9 @@ #include "Base/Progress/ProgressHandler.h" #include "Resample/Processed/ProcessedSample.h" -IComputation::IComputation(std::unique_ptr<const ProcessedSample>&& re_sample, - const SimulationOptions& options, ProgressHandler& progress) - : m_re_sample(std::move(re_sample)), m_options(options), m_progress(&progress) +IComputation::IComputation(const ProcessedSample& re_sample, const SimulationOptions& options, + ProgressHandler& progress) + : m_re_sample(re_sample), m_options(options), m_progress(&progress) { } diff --git a/Core/Computation/IComputation.h b/Core/Computation/IComputation.h index 84e04a4a8128200d6b9adb13f72d27b17efc5223..32c33d54b684c8643998a4e021f10f1738b5ffe1 100644 --- a/Core/Computation/IComputation.h +++ b/Core/Computation/IComputation.h @@ -37,8 +37,8 @@ class SimulationOptions; class IComputation { public: - IComputation(std::unique_ptr<const ProcessedSample>&& re_sample, - const SimulationOptions& options, ProgressHandler& progress); + IComputation(const ProcessedSample& re_sample, const SimulationOptions& options, + ProgressHandler& progress); virtual ~IComputation(); //! Calls runProtected(), catches exceptions, sets m_status. @@ -51,7 +51,7 @@ protected: void setProgressHandler(ProgressHandler* progress) const; void stepProgress() const; - const std::unique_ptr<const ProcessedSample> m_re_sample; + const ProcessedSample& m_re_sample; const SimulationOptions& m_options; ProgressHandler* m_progress; ComputationStatus m_status; diff --git a/Core/Computation/SpecularComputation.cpp b/Core/Computation/SpecularComputation.cpp index 7804e0ddfe89d00512fa113d9aa1a823456698f3..8913655a1d62591c767a4088e51f1b1ae728a1cc 100644 --- a/Core/Computation/SpecularComputation.cpp +++ b/Core/Computation/SpecularComputation.cpp @@ -23,26 +23,25 @@ namespace { -std::unique_ptr<ISpecularStrategy>sample2strategy(const ProcessedSample& re_sample) +std::unique_ptr<ISpecularStrategy> sample2strategy(const ProcessedSample& re_sample) { if (re_sample.polarizing()) return SampleUtils::SpecularStrategyBuilder::buildMagnetic( re_sample.sample().roughnessModel()); - return SampleUtils::SpecularStrategyBuilder::buildScalar( - re_sample.sample().roughnessModel()); + return SampleUtils::SpecularStrategyBuilder::buildScalar(re_sample.sample().roughnessModel()); } } // namespace -SpecularComputation::SpecularComputation(std::unique_ptr<const ProcessedSample>&& re_sample, +SpecularComputation::SpecularComputation(const ProcessedSample& re_sample, const SimulationOptions& options, ProgressHandler& progress, SpecularElementIter begin_it, SpecularElementIter end_it) : IComputation(std::move(re_sample), options, progress) , m_begin_it(begin_it) , m_end_it(end_it) - , m_strategy(sample2strategy(*m_re_sample)) + , m_strategy(sample2strategy(m_re_sample)) { } @@ -50,15 +49,14 @@ SpecularComputation::~SpecularComputation() = default; void SpecularComputation::runProtected() { - auto& slices = m_re_sample->averageSlices(); + auto& slices = m_re_sample.averageSlices(); for (auto it = m_begin_it; it != m_end_it; ++it) { SpecularElement& ele = *it; if (!ele.isCalculated()) continue; - if (m_re_sample->polarizing()) { - const auto R = - std::get<Eigen::Matrix2cd>( - m_strategy->computeTopLayerR(slices, ele.produceKz(slices))); + if (m_re_sample.polarizing()) { + const auto R = std::get<Eigen::Matrix2cd>( + m_strategy->computeTopLayerR(slices, ele.produceKz(slices))); const auto& polarization = ele.polarizationHandler().getPolarization(); const auto& analyzer = ele.polarizationHandler().getAnalyzerOperator(); @@ -68,8 +66,8 @@ void SpecularComputation::runProtected() ele.setIntensity(std::abs(trace)); } else { - const auto R = std::get<complex_t>( - m_strategy->computeTopLayerR(slices, ele.produceKz(slices))); + const auto R = + std::get<complex_t>(m_strategy->computeTopLayerR(slices, ele.produceKz(slices))); ele.setIntensity(std::norm(R)); } diff --git a/Core/Computation/SpecularComputation.h b/Core/Computation/SpecularComputation.h index 32089000c0d304d8bfa7ea9ed8a36976a6e34328..d6fc5f51a3db8c74ebad1562e7a778040efde263 100644 --- a/Core/Computation/SpecularComputation.h +++ b/Core/Computation/SpecularComputation.h @@ -34,9 +34,9 @@ class SpecularComputation : public IComputation { using SpecularElementIter = std::vector<SpecularElement>::iterator; public: - SpecularComputation(std::unique_ptr<const ProcessedSample>&& re_sample, - const SimulationOptions& options, ProgressHandler& progress, - SpecularElementIter begin_it, SpecularElementIter end_it); + SpecularComputation(const ProcessedSample& re_sample, const SimulationOptions& options, + ProgressHandler& progress, SpecularElementIter begin_it, + SpecularElementIter end_it); ~SpecularComputation() override; private: diff --git a/Core/Simulation/DepthProbeSimulation.cpp b/Core/Simulation/DepthProbeSimulation.cpp index fc367cb3eb711835fde2b9859b780959685f390c..268a6bc15fbbce3dcd0acd40535418f68e3eaa31 100644 --- a/Core/Simulation/DepthProbeSimulation.cpp +++ b/Core/Simulation/DepthProbeSimulation.cpp @@ -166,13 +166,14 @@ std::vector<DepthProbeElement> DepthProbeSimulation::generateDiffuseElements(con return result; } -std::unique_ptr<IComputation> DepthProbeSimulation::createComputation( - std::unique_ptr<const ProcessedSample>&& re_sample, size_t start, size_t n_elements) +std::unique_ptr<IComputation> +DepthProbeSimulation::createComputation(const ProcessedSample& re_sample, size_t start, + size_t n_elements) { ASSERT(start < m_sim_elements.size() && start + n_elements <= m_sim_elements.size()); const auto& begin = m_sim_elements.begin() + static_cast<long>(start); - return std::make_unique<DepthProbeComputation>(std::move(re_sample), options(), progress(), - begin, begin + static_cast<long>(n_elements)); + return std::make_unique<DepthProbeComputation>(re_sample, options(), progress(), begin, + begin + static_cast<long>(n_elements)); } void DepthProbeSimulation::validityCheck() const diff --git a/Core/Simulation/DepthProbeSimulation.h b/Core/Simulation/DepthProbeSimulation.h index 101a9ad4640601a3c1d42d3832fa0d9e76cecd76..2588e70edd9f84dce6bf62c58370e2a158999a6b 100644 --- a/Core/Simulation/DepthProbeSimulation.h +++ b/Core/Simulation/DepthProbeSimulation.h @@ -83,9 +83,8 @@ private: //! Generate a single threaded computation for a given range of simulation elements //! @param start Index of the first element to include into computation //! @param n_elements Number of elements to process - std::unique_ptr<IComputation> - createComputation(std::unique_ptr<const ProcessedSample>&& re_sample, - size_t start, size_t n_elements) override; + std::unique_ptr<IComputation> createComputation(const ProcessedSample& re_sample, size_t start, + size_t n_elements) override; //! Checks if simulation data is ready for retrieval. void validityCheck() const; diff --git a/Core/Simulation/ISimulation.cpp b/Core/Simulation/ISimulation.cpp index 6245048bf3087839cc6d1cf5328e591b3b5c1cd6..c25b950a8947389e4d73fba43044b994bc5eae8d 100644 --- a/Core/Simulation/ISimulation.cpp +++ b/Core/Simulation/ISimulation.cpp @@ -300,6 +300,8 @@ void ISimulation::runSingleSimulation(size_t batch_start, size_t batch_size, dou const auto force_polarized = detector().detectionProperties().analyzerDirection() != kvector_t{}; + const ProcessedSample re_sample(*sample(), options(), force_polarized); + initDiffuseElementVector(); const size_t n_threads = m_options.getNumberOfThreads(); @@ -309,16 +311,12 @@ void ISimulation::runSingleSimulation(size_t batch_start, size_t batch_size, dou for (size_t i_thread = 0; i_thread < n_threads; ++i_thread) { - // TODO: Make the ProcessedSample thread-safe, and move it in front of the loop. - auto re_sample = - std::make_unique<ProcessedSample>(*sample(), options(), force_polarized); const size_t thread_start = batch_start + getStartIndex(n_threads, i_thread, batch_size); const size_t thread_size = getNumberOfElements(n_threads, i_thread, batch_size); if (thread_size == 0) break; - computations.emplace_back( - createComputation(std::move(re_sample), thread_start, thread_size)); + computations.emplace_back(createComputation(re_sample, thread_start, thread_size)); } runComputations(computations); diff --git a/Core/Simulation/ISimulation.h b/Core/Simulation/ISimulation.h index d17921c49c74f75ae388cf821dcce6ab50dd57ac..1b48c5293a9b24cdd92c63243c985a76dcf24b84 100644 --- a/Core/Simulation/ISimulation.h +++ b/Core/Simulation/ISimulation.h @@ -128,9 +128,8 @@ private: //! Generate a single threaded computation for a given range of simulation elements //! @param start Index of the first element to include into computation //! @param n_elements Number of elements to process - virtual std::unique_ptr<IComputation> - createComputation(std::unique_ptr<const ProcessedSample>&& re_sample, - size_t start, size_t n_elements) = 0; + virtual std::unique_ptr<IComputation> createComputation(const ProcessedSample& re_sample, + size_t start, size_t n_elements) = 0; //! Checks the distribution validity for simulation. virtual void validateParametrization(const ParameterDistribution&) const {} diff --git a/Core/Simulation/ISimulation2D.cpp b/Core/Simulation/ISimulation2D.cpp index e4ff7efa674160a61bec2da151e2a3056995f83d..6ea02e6f03d3554ddaff9f162b94d44787d9b3f5 100644 --- a/Core/Simulation/ISimulation2D.cpp +++ b/Core/Simulation/ISimulation2D.cpp @@ -95,13 +95,12 @@ void ISimulation2D::setDetector(const IDetector2D& detector) initCoordSystem(); } -std::unique_ptr<IComputation> -ISimulation2D::createComputation(std::unique_ptr<const ProcessedSample>&& re_sample, - size_t start, size_t n_elements) +std::unique_ptr<IComputation> ISimulation2D::createComputation(const ProcessedSample& re_sample, + size_t start, size_t n_elements) { ASSERT(start < m_sim_elements.size() && start + n_elements <= m_sim_elements.size()); const auto& begin = m_sim_elements.begin() + static_cast<long>(start); - return std::make_unique<DWBAComputation>(std::move(re_sample), options(), progress(), begin, + return std::make_unique<DWBAComputation>(re_sample, options(), progress(), begin, begin + static_cast<long>(n_elements)); } diff --git a/Core/Simulation/ISimulation2D.h b/Core/Simulation/ISimulation2D.h index c4e0825a5fd8a5ce6c0266e061b0ecb9d1477a63..d3d7c4aa63a958cec941fcc6bf7930e75e620606 100644 --- a/Core/Simulation/ISimulation2D.h +++ b/Core/Simulation/ISimulation2D.h @@ -78,9 +78,8 @@ protected: //! Generate a single threaded computation for a given range of simulation elements //! @param start Index of the first element to include into computation //! @param n_elements Number of elements to process - std::unique_ptr<IComputation> - createComputation(std::unique_ptr<const ProcessedSample>&& re_sample, - size_t start, size_t n_elements) override; + std::unique_ptr<IComputation> createComputation(const ProcessedSample& re_sample, size_t start, + size_t n_elements) override; //! Generate simulation elements for given beam std::vector<DiffuseElement> generateDiffuseElements(const Beam& beam); diff --git a/Core/Simulation/SpecularSimulation.cpp b/Core/Simulation/SpecularSimulation.cpp index 6e56779dacacff39cfa0313cdd6466d5225583ce..542e71159ed810cf80fc68bf7e128872b183a19c 100644 --- a/Core/Simulation/SpecularSimulation.cpp +++ b/Core/Simulation/SpecularSimulation.cpp @@ -166,12 +166,13 @@ void SpecularSimulation::initDiffuseElementVector() m_cache.resize(m_sim_elements.size(), 0); } -std::unique_ptr<IComputation> SpecularSimulation::createComputation( - std::unique_ptr<const ProcessedSample>&& re_sample, size_t start, size_t n_elements) +std::unique_ptr<IComputation> +SpecularSimulation::createComputation(const ProcessedSample& re_sample, size_t start, + size_t n_elements) { ASSERT(start < m_sim_elements.size() && start + n_elements <= m_sim_elements.size()); const auto& begin = m_sim_elements.begin() + static_cast<long>(start); - return std::make_unique<SpecularComputation>(std::move(re_sample), options(), progress(), begin, + return std::make_unique<SpecularComputation>(re_sample, options(), progress(), begin, begin + static_cast<long>(n_elements)); } diff --git a/Core/Simulation/SpecularSimulation.h b/Core/Simulation/SpecularSimulation.h index c21ae6c43304822aaae33a736bfb5dfd5fa0abaf..33c4b696a69eba9d92648bae9793b78d06e3279e 100644 --- a/Core/Simulation/SpecularSimulation.h +++ b/Core/Simulation/SpecularSimulation.h @@ -73,9 +73,8 @@ private: //! Generate a single threaded computation for a given range of simulation elements //! @param start Index of the first element to include into computation //! @param n_elements Number of elements to process - std::unique_ptr<IComputation> - createComputation(std::unique_ptr<const ProcessedSample>&& re_sample, - size_t start, size_t n_elements) override; + std::unique_ptr<IComputation> createComputation(const ProcessedSample& re_sample, size_t start, + size_t n_elements) override; void checkCache() const; diff --git a/GUI/Views/FitWidgets/FitParameterWidget.cpp b/GUI/Views/FitWidgets/FitParameterWidget.cpp index a8a23b2e8c132ed0e25f62d000d22b3e2ac748b3..7f413f7e18b153600072542e1a4c5da5988cd48c 100644 --- a/GUI/Views/FitWidgets/FitParameterWidget.cpp +++ b/GUI/Views/FitWidgets/FitParameterWidget.cpp @@ -21,8 +21,8 @@ #include "GUI/Models/JobItem.h" #include "GUI/Models/JobModel.h" #include "GUI/Models/ParameterTreeItems.h" -#include "GUI/Views/InfoWidgets/OverlayLabelController.h" #include "GUI/Views/FitWidgets/ParameterTuningWidget.h" +#include "GUI/Views/InfoWidgets/OverlayLabelController.h" #include "GUI/Views/SessionModelDelegate.h" #include "GUI/mainwindow/mainwindow_constants.h" #include "GUI/utils/CustomEventFilters.h" diff --git a/GUI/Views/JobWidgets/JobResultsPresenter.cpp b/GUI/Views/JobWidgets/JobResultsPresenter.cpp index 3db26ebbdbd245d6eb01aecb114d17db6f0e303a..eaaac70fbeebf7f59b86b2bce7f0010f5cf40416 100644 --- a/GUI/Views/JobWidgets/JobResultsPresenter.cpp +++ b/GUI/Views/JobWidgets/JobResultsPresenter.cpp @@ -15,9 +15,9 @@ #include "GUI/Views/JobWidgets/JobResultsPresenter.h" #include "GUI/Models/InstrumentItems.h" #include "GUI/Models/JobItem.h" +#include "GUI/Views/IntensityDataWidgets/IntensityDataWidget.h" #include "GUI/Views/JobWidgets/FitComparisonWidget.h" #include "GUI/Views/JobWidgets/FitComparisonWidget1D.h" -#include "GUI/Views/IntensityDataWidgets/IntensityDataWidget.h" #include "GUI/Views/ProjectionsWidgets/IntensityDataProjectionsWidget.h" #include "GUI/Views/SpecularDataWidgets/SpecularDataWidget.h" diff --git a/auto/Wrap/doxygenCore.i b/auto/Wrap/doxygenCore.i index 26c150391726c2e5a5293e4a2b5b865b640561e5..ac602de7581a0b887682bd40b352edfc720a0808 100644 --- a/auto/Wrap/doxygenCore.i +++ b/auto/Wrap/doxygenCore.i @@ -289,7 +289,7 @@ Controlled by the multi-threading machinery in ISimulation::runSingleSimulation( C++ includes: DepthProbeComputation.h "; -%feature("docstring") DepthProbeComputation::DepthProbeComputation "DepthProbeComputation::DepthProbeComputation(std::unique_ptr< const ProcessedSample > &&re_sample, const SimulationOptions &options, ProgressHandler &progress, DepthProbeElementIter begin_it, DepthProbeElementIter end_it) +%feature("docstring") DepthProbeComputation::DepthProbeComputation "DepthProbeComputation::DepthProbeComputation(const ProcessedSample &re_sample, const SimulationOptions &options, ProgressHandler &progress, DepthProbeElementIter begin_it, DepthProbeElementIter end_it) "; %feature("docstring") DepthProbeComputation::~DepthProbeComputation "DepthProbeComputation::~DepthProbeComputation() override @@ -405,7 +405,7 @@ Controlled by the multi-threading machinery in ISimulation::runSingleSimulation( C++ includes: DWBAComputation.h "; -%feature("docstring") DWBAComputation::DWBAComputation "DWBAComputation::DWBAComputation(std::unique_ptr< const ProcessedSample > &&re_sample, const SimulationOptions &options, ProgressHandler &progress, std::vector< DiffuseElement >::iterator begin_it, std::vector< DiffuseElement >::iterator end_it) +%feature("docstring") DWBAComputation::DWBAComputation "DWBAComputation::DWBAComputation(const ProcessedSample &re_sample, const SimulationOptions &options, ProgressHandler &progress, std::vector< DiffuseElement >::iterator begin_it, std::vector< DiffuseElement >::iterator end_it) "; %feature("docstring") DWBAComputation::~DWBAComputation "DWBAComputation::~DWBAComputation() override @@ -856,7 +856,7 @@ Controlled by the multi-threading machinery in ISimulation::runSingleSimulation( C++ includes: IComputation.h "; -%feature("docstring") IComputation::IComputation "IComputation::IComputation(std::unique_ptr< const ProcessedSample > &&re_sample, const SimulationOptions &options, ProgressHandler &progress) +%feature("docstring") IComputation::IComputation "IComputation::IComputation(const ProcessedSample &re_sample, const SimulationOptions &options, ProgressHandler &progress) "; %feature("docstring") IComputation::~IComputation "IComputation::~IComputation() @@ -1957,7 +1957,7 @@ Controlled by the multi-threading machinery in ISimulation::runSingleSimulation( C++ includes: SpecularComputation.h "; -%feature("docstring") SpecularComputation::SpecularComputation "SpecularComputation::SpecularComputation(std::unique_ptr< const ProcessedSample > &&re_sample, const SimulationOptions &options, ProgressHandler &progress, SpecularElementIter begin_it, SpecularElementIter end_it) +%feature("docstring") SpecularComputation::SpecularComputation "SpecularComputation::SpecularComputation(const ProcessedSample &re_sample, const SimulationOptions &options, ProgressHandler &progress, SpecularElementIter begin_it, SpecularElementIter end_it) "; %feature("docstring") SpecularComputation::~SpecularComputation "SpecularComputation::~SpecularComputation() override