Dynare++: make tensor containers assignable
parent
58bdee12c3
commit
8751de896b
|
@ -71,7 +71,7 @@ IntSequence::IntSequence(int i, const IntSequence &s, int pos)
|
||||||
operator[](jj+1) = s[jj];
|
operator[](jj+1) = s[jj];
|
||||||
}
|
}
|
||||||
|
|
||||||
const IntSequence &
|
IntSequence &
|
||||||
IntSequence::operator=(const IntSequence &s)
|
IntSequence::operator=(const IntSequence &s)
|
||||||
{
|
{
|
||||||
TL_RAISE_IF(length != s.length, "Wrong length for in-place IntSequence::operator=");
|
TL_RAISE_IF(length != s.length, "Wrong length for in-place IntSequence::operator=");
|
||||||
|
@ -79,7 +79,7 @@ IntSequence::operator=(const IntSequence &s)
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
const IntSequence &
|
IntSequence &
|
||||||
IntSequence::operator=(IntSequence &&s)
|
IntSequence::operator=(IntSequence &&s)
|
||||||
{
|
{
|
||||||
TL_RAISE_IF(length != s.length, "Wrong length for in-place IntSequence::operator=");
|
TL_RAISE_IF(length != s.length, "Wrong length for in-place IntSequence::operator=");
|
||||||
|
|
|
@ -98,8 +98,8 @@ public:
|
||||||
// Inserts an element at a given position
|
// Inserts an element at a given position
|
||||||
IntSequence(int i, const IntSequence &s, int pos);
|
IntSequence(int i, const IntSequence &s, int pos);
|
||||||
|
|
||||||
const IntSequence &operator=(const IntSequence &s);
|
IntSequence &operator=(const IntSequence &s);
|
||||||
const IntSequence &operator=(IntSequence &&s);
|
IntSequence &operator=(IntSequence &&s);
|
||||||
virtual ~IntSequence()
|
virtual ~IntSequence()
|
||||||
{
|
{
|
||||||
if (destroy)
|
if (destroy)
|
||||||
|
|
|
@ -71,10 +71,6 @@ public:
|
||||||
: IntSequence(std::move(init))
|
: 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
|
// Constructor of implied symmetry for a symmetry and an equivalence class
|
||||||
Symmetry(const Symmetry &s, const OrdSequence &cl)
|
Symmetry(const Symmetry &s, const OrdSequence &cl)
|
||||||
: IntSequence(s, cl.getData())
|
: IntSequence(s, cl.getData())
|
||||||
|
|
|
@ -129,6 +129,15 @@ public:
|
||||||
insert(std::make_unique<_Ttype>(first_row, num, *(it.second)));
|
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 &
|
const _Ttype &
|
||||||
get(const Symmetry &s) const
|
get(const Symmetry &s) const
|
||||||
{
|
{
|
||||||
|
@ -302,8 +311,6 @@ public:
|
||||||
: TensorContainer<UGSTensor>(nn)
|
: TensorContainer<UGSTensor>(nn)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
UGSContainer(const UGSContainer &) = default;
|
|
||||||
UGSContainer(UGSContainer &&) = default;
|
|
||||||
UGSContainer(const FGSContainer &c);
|
UGSContainer(const FGSContainer &c);
|
||||||
void multAndAdd(const UGSTensor &t, UGSTensor &out) const;
|
void multAndAdd(const UGSTensor &t, UGSTensor &out) const;
|
||||||
};
|
};
|
||||||
|
@ -329,8 +336,6 @@ public:
|
||||||
: TensorContainer<FGSTensor>(nn)
|
: TensorContainer<FGSTensor>(nn)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
FGSContainer(const FGSContainer &) = default;
|
|
||||||
FGSContainer(FGSContainer &&) = default;
|
|
||||||
FGSContainer(const UGSContainer &c);
|
FGSContainer(const UGSContainer &c);
|
||||||
void multAndAdd(const FGSTensor &t, FGSTensor &out) const;
|
void multAndAdd(const FGSTensor &t, FGSTensor &out) const;
|
||||||
void multAndAdd(const UGSTensor &t, FGSTensor &out) const;
|
void multAndAdd(const UGSTensor &t, FGSTensor &out) const;
|
||||||
|
|
Loading…
Reference in New Issue