From 8751de896b1a0ee77cd3b933e62ccc016cebab66 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Villemot?= Date: Fri, 22 Feb 2019 16:54:00 +0100 Subject: [PATCH] Dynare++: make tensor containers assignable --- dynare++/tl/cc/int_sequence.cc | 4 ++-- dynare++/tl/cc/int_sequence.hh | 4 ++-- dynare++/tl/cc/symmetry.hh | 4 ---- dynare++/tl/cc/t_container.hh | 13 +++++++++---- 4 files changed, 13 insertions(+), 12 deletions(-) diff --git a/dynare++/tl/cc/int_sequence.cc b/dynare++/tl/cc/int_sequence.cc index 221b45885..40f829868 100644 --- a/dynare++/tl/cc/int_sequence.cc +++ b/dynare++/tl/cc/int_sequence.cc @@ -71,7 +71,7 @@ IntSequence::IntSequence(int i, const IntSequence &s, int pos) operator[](jj+1) = s[jj]; } -const IntSequence & +IntSequence & IntSequence::operator=(const IntSequence &s) { TL_RAISE_IF(length != s.length, "Wrong length for in-place IntSequence::operator="); @@ -79,7 +79,7 @@ IntSequence::operator=(const IntSequence &s) return *this; } -const IntSequence & +IntSequence & IntSequence::operator=(IntSequence &&s) { TL_RAISE_IF(length != s.length, "Wrong length for in-place IntSequence::operator="); diff --git a/dynare++/tl/cc/int_sequence.hh b/dynare++/tl/cc/int_sequence.hh index 2495f914c..da876bf2d 100644 --- a/dynare++/tl/cc/int_sequence.hh +++ b/dynare++/tl/cc/int_sequence.hh @@ -98,8 +98,8 @@ public: // Inserts an element at a given position IntSequence(int i, const IntSequence &s, int pos); - const IntSequence &operator=(const IntSequence &s); - const IntSequence &operator=(IntSequence &&s); + IntSequence &operator=(const IntSequence &s); + IntSequence &operator=(IntSequence &&s); virtual ~IntSequence() { if (destroy) diff --git a/dynare++/tl/cc/symmetry.hh b/dynare++/tl/cc/symmetry.hh index e5e97bc13..414acc580 100644 --- a/dynare++/tl/cc/symmetry.hh +++ b/dynare++/tl/cc/symmetry.hh @@ -71,10 +71,6 @@ public: : IntSequence(std::move(init)) { } - // Copy constructor - Symmetry(const Symmetry &s) = default; - // Move constructor - Symmetry(Symmetry &&s) = default; // Constructor of implied symmetry for a symmetry and an equivalence class Symmetry(const Symmetry &s, const OrdSequence &cl) : IntSequence(s, cl.getData()) diff --git a/dynare++/tl/cc/t_container.hh b/dynare++/tl/cc/t_container.hh index 8a21c4a16..f37a1a0a4 100644 --- a/dynare++/tl/cc/t_container.hh +++ b/dynare++/tl/cc/t_container.hh @@ -129,6 +129,15 @@ public: insert(std::make_unique<_Ttype>(first_row, num, *(it.second))); } + TensorContainer<_Ttype> &operator=(const TensorContainer<_Ttype> &c) + { + n = c.n; + m.clear(); + for (const auto &it : c.m) + insert(std::make_unique<_Ttype>(*(it.second))); + } + TensorContainer<_Ttype> &operator=(TensorContainer<_Ttype> &&) = default; + const _Ttype & get(const Symmetry &s) const { @@ -302,8 +311,6 @@ public: : TensorContainer(nn) { } - UGSContainer(const UGSContainer &) = default; - UGSContainer(UGSContainer &&) = default; UGSContainer(const FGSContainer &c); void multAndAdd(const UGSTensor &t, UGSTensor &out) const; }; @@ -329,8 +336,6 @@ public: : TensorContainer(nn) { } - FGSContainer(const FGSContainer &) = default; - FGSContainer(FGSContainer &&) = default; FGSContainer(const UGSContainer &c); void multAndAdd(const FGSTensor &t, FGSTensor &out) const; void multAndAdd(const UGSTensor &t, FGSTensor &out) const;