diff --git a/Base/Types/OwningVector.h b/Base/Types/OwningVector.h index a9e63628631e66406799950f37c699c5b6326ea5..4d92e4fcee79179dbd385b56d786e919705325f7 100644 --- a/Base/Types/OwningVector.h +++ b/Base/Types/OwningVector.h @@ -49,6 +49,7 @@ public: for (T* e : other) m_v.emplace_back(e->clone()); } + OwningVector(OwningVector&& other) = default; ~OwningVector() { clear(); } OwningVector& operator=(const OwningVector& other) { @@ -58,6 +59,7 @@ public: std::swap(m_v, ret.m_v); return *this; } + OwningVector& operator=(OwningVector&& other) = default; void emplace_back(T* e) { m_v.emplace_back(e); } void clear() diff --git a/Sim/Computation/DWBAComputation.cpp b/Sim/Computation/DWBAComputation.cpp index eda9af78687fc8a8fe8a51649e9ee71901aa1ae0..541bb30ff7b0c6f5dacfe69e7235b91e18c40be7 100644 --- a/Sim/Computation/DWBAComputation.cpp +++ b/Sim/Computation/DWBAComputation.cpp @@ -26,11 +26,11 @@ namespace { -std::vector<std::unique_ptr<const ParticleLayoutContribution>> +OwningVector<const ParticleLayoutContribution> makeLayoutComputation(const std::vector<reLayout>& layouts, const SimulationOptions& options, bool polarized) { - std::vector<std::unique_ptr<const ParticleLayoutContribution>> result; + OwningVector<const ParticleLayoutContribution> result; for (const reLayout& layout : layouts) result.emplace_back(new ParticleLayoutContribution(layout, options, polarized)); diff --git a/Sim/Computation/DWBAComputation.h b/Sim/Computation/DWBAComputation.h index c7195c1afb39cb914ce69ecbf714a798c31e95ae..d0edf7bb560902e58887de00dd1f04e0bf836944 100644 --- a/Sim/Computation/DWBAComputation.h +++ b/Sim/Computation/DWBAComputation.h @@ -21,6 +21,7 @@ #define BORNAGAIN_SIM_COMPUTATION_DWBACOMPUTATION_H #include "Sim/Computation/IComputation.h" +#include "Base/Types/OwningVector.h" #include <vector> class DiffuseElement; @@ -53,7 +54,7 @@ private: std::vector<DiffuseElement>::iterator m_begin_it, m_end_it; const std::unique_ptr<const GISASSpecularContribution> m_specular_contrib; const std::unique_ptr<const RoughMultiLayerContribution> m_roughness_contrib; - const std::vector<std::unique_ptr<const ParticleLayoutContribution>> m_layout_contribs; + const OwningVector<const ParticleLayoutContribution> m_layout_contribs; }; #endif // BORNAGAIN_SIM_COMPUTATION_DWBACOMPUTATION_H diff --git a/auto/Wrap/doxygenBase.i b/auto/Wrap/doxygenBase.i index 55d236e7eaf9c7559e3ba3551e0f95f0be54d490..612cb84e31509ac5c2ffbe773c4bff9a432c2256 100644 --- a/auto/Wrap/doxygenBase.i +++ b/auto/Wrap/doxygenBase.i @@ -693,6 +693,9 @@ OwningVector::OwningVector Constructor that clones elements in given vector. "; +%feature("docstring") OwningVector::OwningVector "OwningVector< T >::OwningVector(OwningVector &&other)=default +OwningVector::OwningVector"; + %feature("docstring") OwningVector::~OwningVector "OwningVector< T >::~OwningVector() OwningVector::~OwningVector";