Dynare++: make tensor containers assignable

time-shift
Sébastien Villemot 2019-02-22 16:54:00 +01:00
parent 58bdee12c3
commit 8751de896b
No known key found for this signature in database
GPG Key ID: 2CECE9350ECEBE4A
4 changed files with 13 additions and 12 deletions

View File

@ -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=");

View File

@ -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)

View File

@ -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())

View File

@ -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<UGSTensor>(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<FGSTensor>(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;