Skip to content
Snippets Groups Projects
Verified Commit 98c27fad authored by Sébastien Villemot's avatar Sébastien Villemot
Browse files

StaticModel: add missing fields in copy constructor and assigment operators

This should have been in commit 0169240f.
parent 9ecc288f
Branches
No related tags found
No related merge requests found
...@@ -36,9 +36,23 @@ StaticModel::StaticModel(SymbolTable &symbol_table_arg, ...@@ -36,9 +36,23 @@ StaticModel::StaticModel(SymbolTable &symbol_table_arg,
{ {
} }
void
StaticModel::copyHelper(const StaticModel &m)
{
auto f = [this](const ExprNode *e) { return e->clone(*this); };
for (const auto &it : m.ramsey_multipliers_derivatives_temporary_terms)
ramsey_multipliers_derivatives_temporary_terms.insert(f(it));
for (const auto &it : m.ramsey_multipliers_derivatives_temporary_terms_idxs)
ramsey_multipliers_derivatives_temporary_terms_idxs.emplace(f(it.first), it.second);
}
StaticModel::StaticModel(const StaticModel &m) : StaticModel::StaticModel(const StaticModel &m) :
ModelTree{m} ModelTree{m},
ramsey_multipliers_derivatives{m.ramsey_multipliers_derivatives},
ramsey_multipliers_derivatives_sparse_colptr{m.ramsey_multipliers_derivatives_sparse_colptr}
{ {
copyHelper(m);
} }
StaticModel & StaticModel &
...@@ -46,6 +60,11 @@ StaticModel::operator=(const StaticModel &m) ...@@ -46,6 +60,11 @@ StaticModel::operator=(const StaticModel &m)
{ {
ModelTree::operator=(m); ModelTree::operator=(m);
ramsey_multipliers_derivatives = m.ramsey_multipliers_derivatives;
ramsey_multipliers_derivatives_sparse_colptr = m.ramsey_multipliers_derivatives_sparse_colptr;
copyHelper(m);
return *this; return *this;
} }
... ...
......
...@@ -117,6 +117,11 @@ private: ...@@ -117,6 +117,11 @@ private:
template<ExprNodeOutputType output_type> template<ExprNodeOutputType output_type>
void writeRamseyMultipliersDerivativesHelper(ostream &output) const; void writeRamseyMultipliersDerivativesHelper(ostream &output) const;
//! Internal helper for the copy constructor and assignment operator
/*! Copies all the structures that contain ExprNode*, by the converting the
pointers into their equivalent in the new tree */
void copyHelper(const StaticModel &m);
protected: protected:
string string
modelClassName() const override modelClassName() const override
... ...
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment