C++17 modernization: use std::optional for trend variables in TCM
parent
fb3b1c301f
commit
0b51294994
|
@ -3119,12 +3119,13 @@ DynamicModel::updateVarAndTrendModel() const
|
||||||
{
|
{
|
||||||
for (bool var : { true, false })
|
for (bool var : { true, false })
|
||||||
{
|
{
|
||||||
map<string, vector<int>> trend_varr;
|
map<string, vector<optional<int>>> trend_varr;
|
||||||
map<string, vector<set<pair<int, int>>>> rhsr;
|
map<string, vector<set<pair<int, int>>>> rhsr;
|
||||||
for (const auto &[model_name, eqns] : (var ? var_model_table.getEqNums()
|
for (const auto &[model_name, eqns] : (var ? var_model_table.getEqNums()
|
||||||
: trend_component_model_table.getEqNums()))
|
: trend_component_model_table.getEqNums()))
|
||||||
{
|
{
|
||||||
vector<int> lhs, trend_var, trend_lhs;
|
vector<int> lhs, trend_lhs;
|
||||||
|
vector<optional<int>> trend_var;
|
||||||
vector<set<pair<int, int>>> rhs;
|
vector<set<pair<int, int>>> rhs;
|
||||||
|
|
||||||
if (!var)
|
if (!var)
|
||||||
|
@ -3160,25 +3161,25 @@ DynamicModel::updateVarAndTrendModel() const
|
||||||
catch (...)
|
catch (...)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
int trend_var_symb_id = equations[eqn]->arg2->findTargetVariable(lhs_symb_id);
|
optional<int> trend_var_symb_id = equations[eqn]->arg2->findTargetVariable(lhs_symb_id);
|
||||||
if (trend_var_symb_id >= 0)
|
if (trend_var_symb_id)
|
||||||
{
|
{
|
||||||
if (symbol_table.isDiffAuxiliaryVariable(trend_var_symb_id))
|
if (symbol_table.isDiffAuxiliaryVariable(*trend_var_symb_id))
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
trend_var_symb_id = symbol_table.getOrigSymbIdForAuxVar(trend_var_symb_id);
|
trend_var_symb_id = symbol_table.getOrigSymbIdForAuxVar(*trend_var_symb_id);
|
||||||
}
|
}
|
||||||
catch (...)
|
catch (...)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
if (find(trend_lhs.begin(), trend_lhs.end(), trend_var_symb_id) == trend_lhs.end())
|
if (find(trend_lhs.begin(), trend_lhs.end(), *trend_var_symb_id) == trend_lhs.end())
|
||||||
{
|
{
|
||||||
cerr << "ERROR: trend found in trend_component equation #" << eqn << " ("
|
cerr << "ERROR: trend found in trend_component equation #" << eqn << " ("
|
||||||
<< symbol_table.getName(trend_var_symb_id) << ") does not correspond to a trend equation" << endl;
|
<< symbol_table.getName(*trend_var_symb_id) << ") does not correspond to a trend equation" << endl;
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
trend_var.push_back(trend_var_symb_id);
|
trend_var.push_back(move(trend_var_symb_id));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -643,10 +643,10 @@ NumConstNode::findUnaryOpNodesForAuxVarCreation(lag_equivalence_table_t &nodes)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
optional<int>
|
||||||
NumConstNode::findTargetVariable(int lhs_symb_id) const
|
NumConstNode::findTargetVariable(int lhs_symb_id) const
|
||||||
{
|
{
|
||||||
return -1;
|
return nullopt;
|
||||||
}
|
}
|
||||||
|
|
||||||
expr_t
|
expr_t
|
||||||
|
@ -1593,13 +1593,13 @@ VariableNode::findUnaryOpNodesForAuxVarCreation(lag_equivalence_table_t &nodes)
|
||||||
datatree.getLocalVariable(symb_id)->findUnaryOpNodesForAuxVarCreation(nodes);
|
datatree.getLocalVariable(symb_id)->findUnaryOpNodesForAuxVarCreation(nodes);
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
optional<int>
|
||||||
VariableNode::findTargetVariable(int lhs_symb_id) const
|
VariableNode::findTargetVariable(int lhs_symb_id) const
|
||||||
{
|
{
|
||||||
if (get_type() == SymbolType::modelLocalVariable)
|
if (get_type() == SymbolType::modelLocalVariable)
|
||||||
return datatree.getLocalVariable(symb_id)->findTargetVariable(lhs_symb_id);
|
return datatree.getLocalVariable(symb_id)->findTargetVariable(lhs_symb_id);
|
||||||
|
|
||||||
return -1;
|
return nullopt;
|
||||||
}
|
}
|
||||||
|
|
||||||
expr_t
|
expr_t
|
||||||
|
@ -3393,7 +3393,7 @@ UnaryOpNode::findDiffNodes(lag_equivalence_table_t &nodes) const
|
||||||
nodes[lag_equiv_repr][index] = const_cast<UnaryOpNode *>(this);
|
nodes[lag_equiv_repr][index] = const_cast<UnaryOpNode *>(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
optional<int>
|
||||||
UnaryOpNode::findTargetVariable(int lhs_symb_id) const
|
UnaryOpNode::findTargetVariable(int lhs_symb_id) const
|
||||||
{
|
{
|
||||||
return arg->findTargetVariable(lhs_symb_id);
|
return arg->findTargetVariable(lhs_symb_id);
|
||||||
|
@ -5310,14 +5310,14 @@ BinaryOpNode::findTargetVariableHelper1(int lhs_symb_id, int rhs_symb_id) const
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
optional<int>
|
||||||
BinaryOpNode::findTargetVariableHelper(const expr_t arg1, const expr_t arg2,
|
BinaryOpNode::findTargetVariableHelper(const expr_t arg1, const expr_t arg2,
|
||||||
int lhs_symb_id) const
|
int lhs_symb_id) const
|
||||||
{
|
{
|
||||||
set<int> params;
|
set<int> params;
|
||||||
arg1->collectVariables(SymbolType::parameter, params);
|
arg1->collectVariables(SymbolType::parameter, params);
|
||||||
if (params.size() != 1)
|
if (params.size() != 1)
|
||||||
return -1;
|
return nullopt;
|
||||||
|
|
||||||
set<pair<int, int>> endogs;
|
set<pair<int, int>> endogs;
|
||||||
arg2->collectDynamicVariables(SymbolType::endogenous, endogs);
|
arg2->collectDynamicVariables(SymbolType::endogenous, endogs);
|
||||||
|
@ -5331,18 +5331,18 @@ BinaryOpNode::findTargetVariableHelper(const expr_t arg1, const expr_t arg2,
|
||||||
else if (findTargetVariableHelper1(lhs_symb_id, endogs.rbegin()->first))
|
else if (findTargetVariableHelper1(lhs_symb_id, endogs.rbegin()->first))
|
||||||
return endogs.begin()->first;
|
return endogs.begin()->first;
|
||||||
}
|
}
|
||||||
return -1;
|
return nullopt;
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
optional<int>
|
||||||
BinaryOpNode::findTargetVariable(int lhs_symb_id) const
|
BinaryOpNode::findTargetVariable(int lhs_symb_id) const
|
||||||
{
|
{
|
||||||
int retval = findTargetVariableHelper(arg1, arg2, lhs_symb_id);
|
optional<int> retval = findTargetVariableHelper(arg1, arg2, lhs_symb_id);
|
||||||
if (retval < 0)
|
if (!retval)
|
||||||
retval = findTargetVariableHelper(arg2, arg1, lhs_symb_id);
|
retval = findTargetVariableHelper(arg2, arg1, lhs_symb_id);
|
||||||
if (retval < 0)
|
if (!retval)
|
||||||
retval = arg1->findTargetVariable(lhs_symb_id);
|
retval = arg1->findTargetVariable(lhs_symb_id);
|
||||||
if (retval < 0)
|
if (!retval)
|
||||||
retval = arg2->findTargetVariable(lhs_symb_id);
|
retval = arg2->findTargetVariable(lhs_symb_id);
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
@ -6447,13 +6447,13 @@ TrinaryOpNode::findUnaryOpNodesForAuxVarCreation(lag_equivalence_table_t &nodes)
|
||||||
arg3->findUnaryOpNodesForAuxVarCreation(nodes);
|
arg3->findUnaryOpNodesForAuxVarCreation(nodes);
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
optional<int>
|
||||||
TrinaryOpNode::findTargetVariable(int lhs_symb_id) const
|
TrinaryOpNode::findTargetVariable(int lhs_symb_id) const
|
||||||
{
|
{
|
||||||
int retval = arg1->findTargetVariable(lhs_symb_id);
|
optional<int> retval = arg1->findTargetVariable(lhs_symb_id);
|
||||||
if (retval < 0)
|
if (!retval)
|
||||||
retval = arg2->findTargetVariable(lhs_symb_id);
|
retval = arg2->findTargetVariable(lhs_symb_id);
|
||||||
if (retval < 0)
|
if (!retval)
|
||||||
retval = arg3->findTargetVariable(lhs_symb_id);
|
retval = arg3->findTargetVariable(lhs_symb_id);
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
@ -6871,14 +6871,14 @@ AbstractExternalFunctionNode::findUnaryOpNodesForAuxVarCreation(lag_equivalence_
|
||||||
argument->findUnaryOpNodesForAuxVarCreation(nodes);
|
argument->findUnaryOpNodesForAuxVarCreation(nodes);
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
optional<int>
|
||||||
AbstractExternalFunctionNode::findTargetVariable(int lhs_symb_id) const
|
AbstractExternalFunctionNode::findTargetVariable(int lhs_symb_id) const
|
||||||
{
|
{
|
||||||
for (auto argument : arguments)
|
for (auto argument : arguments)
|
||||||
if (int retval = argument->findTargetVariable(lhs_symb_id);
|
if (optional<int> retval = argument->findTargetVariable(lhs_symb_id);
|
||||||
retval >= 0)
|
retval)
|
||||||
return retval;
|
return retval;
|
||||||
return -1;
|
return nullopt;
|
||||||
}
|
}
|
||||||
|
|
||||||
expr_t
|
expr_t
|
||||||
|
@ -8391,10 +8391,10 @@ SubModelNode::findUnaryOpNodesForAuxVarCreation(lag_equivalence_table_t &nodes)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
optional<int>
|
||||||
SubModelNode::findTargetVariable(int lhs_symb_id) const
|
SubModelNode::findTargetVariable(int lhs_symb_id) const
|
||||||
{
|
{
|
||||||
return -1;
|
return nullopt;
|
||||||
}
|
}
|
||||||
|
|
||||||
expr_t
|
expr_t
|
||||||
|
|
|
@ -25,6 +25,7 @@
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <ostream>
|
#include <ostream>
|
||||||
#include <functional>
|
#include <functional>
|
||||||
|
#include <optional>
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
|
@ -620,7 +621,7 @@ public:
|
||||||
//! Substitute pac_target_nonstationary operator
|
//! Substitute pac_target_nonstationary operator
|
||||||
virtual expr_t substitutePacTargetNonstationary(const string &name, expr_t subexpr) = 0;
|
virtual expr_t substitutePacTargetNonstationary(const string &name, expr_t subexpr) = 0;
|
||||||
|
|
||||||
virtual int findTargetVariable(int lhs_symb_id) const = 0;
|
virtual optional<int> findTargetVariable(int lhs_symb_id) const = 0;
|
||||||
|
|
||||||
//! Add ExprNodes to the provided datatree
|
//! Add ExprNodes to the provided datatree
|
||||||
virtual expr_t clone(DataTree &datatree) const = 0;
|
virtual expr_t clone(DataTree &datatree) const = 0;
|
||||||
|
@ -811,7 +812,7 @@ public:
|
||||||
expr_t substituteVarExpectation(const map<string, expr_t> &subst_table) const override;
|
expr_t substituteVarExpectation(const map<string, expr_t> &subst_table) const override;
|
||||||
void findDiffNodes(lag_equivalence_table_t &nodes) const override;
|
void findDiffNodes(lag_equivalence_table_t &nodes) const override;
|
||||||
void findUnaryOpNodesForAuxVarCreation(lag_equivalence_table_t &nodes) const override;
|
void findUnaryOpNodesForAuxVarCreation(lag_equivalence_table_t &nodes) const override;
|
||||||
int findTargetVariable(int lhs_symb_id) const override;
|
optional<int> findTargetVariable(int lhs_symb_id) const override;
|
||||||
expr_t substituteDiff(const lag_equivalence_table_t &nodes, subst_table_t &subst_table, vector<BinaryOpNode *> &neweqs) const override;
|
expr_t substituteDiff(const lag_equivalence_table_t &nodes, subst_table_t &subst_table, vector<BinaryOpNode *> &neweqs) const override;
|
||||||
expr_t substituteUnaryOpNodes(const lag_equivalence_table_t &nodes, subst_table_t &subst_table, vector<BinaryOpNode *> &neweqs) const override;
|
expr_t substituteUnaryOpNodes(const lag_equivalence_table_t &nodes, subst_table_t &subst_table, vector<BinaryOpNode *> &neweqs) const override;
|
||||||
expr_t substitutePacExpectation(const string &name, expr_t subexpr) override;
|
expr_t substitutePacExpectation(const string &name, expr_t subexpr) override;
|
||||||
|
@ -884,7 +885,7 @@ public:
|
||||||
expr_t substituteVarExpectation(const map<string, expr_t> &subst_table) const override;
|
expr_t substituteVarExpectation(const map<string, expr_t> &subst_table) const override;
|
||||||
void findDiffNodes(lag_equivalence_table_t &nodes) const override;
|
void findDiffNodes(lag_equivalence_table_t &nodes) const override;
|
||||||
void findUnaryOpNodesForAuxVarCreation(lag_equivalence_table_t &nodes) const override;
|
void findUnaryOpNodesForAuxVarCreation(lag_equivalence_table_t &nodes) const override;
|
||||||
int findTargetVariable(int lhs_symb_id) const override;
|
optional<int> findTargetVariable(int lhs_symb_id) const override;
|
||||||
expr_t substituteDiff(const lag_equivalence_table_t &nodes, subst_table_t &subst_table, vector<BinaryOpNode *> &neweqs) const override;
|
expr_t substituteDiff(const lag_equivalence_table_t &nodes, subst_table_t &subst_table, vector<BinaryOpNode *> &neweqs) const override;
|
||||||
expr_t substituteUnaryOpNodes(const lag_equivalence_table_t &nodes, subst_table_t &subst_table, vector<BinaryOpNode *> &neweqs) const override;
|
expr_t substituteUnaryOpNodes(const lag_equivalence_table_t &nodes, subst_table_t &subst_table, vector<BinaryOpNode *> &neweqs) const override;
|
||||||
expr_t substitutePacExpectation(const string &name, expr_t subexpr) override;
|
expr_t substitutePacExpectation(const string &name, expr_t subexpr) override;
|
||||||
|
@ -989,7 +990,7 @@ public:
|
||||||
void findDiffNodes(lag_equivalence_table_t &nodes) const override;
|
void findDiffNodes(lag_equivalence_table_t &nodes) const override;
|
||||||
bool createAuxVarForUnaryOpNode() const;
|
bool createAuxVarForUnaryOpNode() const;
|
||||||
void findUnaryOpNodesForAuxVarCreation(lag_equivalence_table_t &nodes) const override;
|
void findUnaryOpNodesForAuxVarCreation(lag_equivalence_table_t &nodes) const override;
|
||||||
int findTargetVariable(int lhs_symb_id) const override;
|
optional<int> findTargetVariable(int lhs_symb_id) const override;
|
||||||
expr_t substituteDiff(const lag_equivalence_table_t &nodes, subst_table_t &subst_table, vector<BinaryOpNode *> &neweqs) const override;
|
expr_t substituteDiff(const lag_equivalence_table_t &nodes, subst_table_t &subst_table, vector<BinaryOpNode *> &neweqs) const override;
|
||||||
expr_t substituteUnaryOpNodes(const lag_equivalence_table_t &nodes, subst_table_t &subst_table, vector<BinaryOpNode *> &neweqs) const override;
|
expr_t substituteUnaryOpNodes(const lag_equivalence_table_t &nodes, subst_table_t &subst_table, vector<BinaryOpNode *> &neweqs) const override;
|
||||||
expr_t substitutePacExpectation(const string &name, expr_t subexpr) override;
|
expr_t substitutePacExpectation(const string &name, expr_t subexpr) override;
|
||||||
|
@ -1096,8 +1097,8 @@ public:
|
||||||
void findDiffNodes(lag_equivalence_table_t &nodes) const override;
|
void findDiffNodes(lag_equivalence_table_t &nodes) const override;
|
||||||
void findUnaryOpNodesForAuxVarCreation(lag_equivalence_table_t &nodes) const override;
|
void findUnaryOpNodesForAuxVarCreation(lag_equivalence_table_t &nodes) const override;
|
||||||
bool findTargetVariableHelper1(int lhs_symb_id, int rhs_symb_id) const;
|
bool findTargetVariableHelper1(int lhs_symb_id, int rhs_symb_id) const;
|
||||||
int findTargetVariableHelper(const expr_t arg1, const expr_t arg2, int lhs_symb_id) const;
|
optional<int> findTargetVariableHelper(const expr_t arg1, const expr_t arg2, int lhs_symb_id) const;
|
||||||
int findTargetVariable(int lhs_symb_id) const override;
|
optional<int> findTargetVariable(int lhs_symb_id) const override;
|
||||||
expr_t substituteDiff(const lag_equivalence_table_t &nodes, subst_table_t &subst_table, vector<BinaryOpNode *> &neweqs) const override;
|
expr_t substituteDiff(const lag_equivalence_table_t &nodes, subst_table_t &subst_table, vector<BinaryOpNode *> &neweqs) const override;
|
||||||
expr_t substituteUnaryOpNodes(const lag_equivalence_table_t &nodes, subst_table_t &subst_table, vector<BinaryOpNode *> &neweqs) const override;
|
expr_t substituteUnaryOpNodes(const lag_equivalence_table_t &nodes, subst_table_t &subst_table, vector<BinaryOpNode *> &neweqs) const override;
|
||||||
expr_t substitutePacExpectation(const string &name, expr_t subexpr) override;
|
expr_t substitutePacExpectation(const string &name, expr_t subexpr) override;
|
||||||
|
@ -1232,7 +1233,7 @@ public:
|
||||||
expr_t substituteVarExpectation(const map<string, expr_t> &subst_table) const override;
|
expr_t substituteVarExpectation(const map<string, expr_t> &subst_table) const override;
|
||||||
void findDiffNodes(lag_equivalence_table_t &nodes) const override;
|
void findDiffNodes(lag_equivalence_table_t &nodes) const override;
|
||||||
void findUnaryOpNodesForAuxVarCreation(lag_equivalence_table_t &nodes) const override;
|
void findUnaryOpNodesForAuxVarCreation(lag_equivalence_table_t &nodes) const override;
|
||||||
int findTargetVariable(int lhs_symb_id) const override;
|
optional<int> findTargetVariable(int lhs_symb_id) const override;
|
||||||
expr_t substituteDiff(const lag_equivalence_table_t &nodes, subst_table_t &subst_table, vector<BinaryOpNode *> &neweqs) const override;
|
expr_t substituteDiff(const lag_equivalence_table_t &nodes, subst_table_t &subst_table, vector<BinaryOpNode *> &neweqs) const override;
|
||||||
expr_t substituteUnaryOpNodes(const lag_equivalence_table_t &nodes, subst_table_t &subst_table, vector<BinaryOpNode *> &neweqs) const override;
|
expr_t substituteUnaryOpNodes(const lag_equivalence_table_t &nodes, subst_table_t &subst_table, vector<BinaryOpNode *> &neweqs) const override;
|
||||||
expr_t substitutePacExpectation(const string &name, expr_t subexpr) override;
|
expr_t substitutePacExpectation(const string &name, expr_t subexpr) override;
|
||||||
|
@ -1342,7 +1343,7 @@ public:
|
||||||
expr_t substituteVarExpectation(const map<string, expr_t> &subst_table) const override;
|
expr_t substituteVarExpectation(const map<string, expr_t> &subst_table) const override;
|
||||||
void findDiffNodes(lag_equivalence_table_t &nodes) const override;
|
void findDiffNodes(lag_equivalence_table_t &nodes) const override;
|
||||||
void findUnaryOpNodesForAuxVarCreation(lag_equivalence_table_t &nodes) const override;
|
void findUnaryOpNodesForAuxVarCreation(lag_equivalence_table_t &nodes) const override;
|
||||||
int findTargetVariable(int lhs_symb_id) const override;
|
optional<int> findTargetVariable(int lhs_symb_id) const override;
|
||||||
expr_t substituteDiff(const lag_equivalence_table_t &nodes, subst_table_t &subst_table, vector<BinaryOpNode *> &neweqs) const override;
|
expr_t substituteDiff(const lag_equivalence_table_t &nodes, subst_table_t &subst_table, vector<BinaryOpNode *> &neweqs) const override;
|
||||||
expr_t substituteUnaryOpNodes(const lag_equivalence_table_t &nodes, subst_table_t &subst_table, vector<BinaryOpNode *> &neweqs) const override;
|
expr_t substituteUnaryOpNodes(const lag_equivalence_table_t &nodes, subst_table_t &subst_table, vector<BinaryOpNode *> &neweqs) const override;
|
||||||
expr_t substitutePacExpectation(const string &name, expr_t subexpr) override;
|
expr_t substitutePacExpectation(const string &name, expr_t subexpr) override;
|
||||||
|
@ -1520,7 +1521,7 @@ public:
|
||||||
expr_t substituteModelLocalVariables() const override;
|
expr_t substituteModelLocalVariables() const override;
|
||||||
void findDiffNodes(lag_equivalence_table_t &nodes) const override;
|
void findDiffNodes(lag_equivalence_table_t &nodes) const override;
|
||||||
void findUnaryOpNodesForAuxVarCreation(lag_equivalence_table_t &nodes) const override;
|
void findUnaryOpNodesForAuxVarCreation(lag_equivalence_table_t &nodes) const override;
|
||||||
int findTargetVariable(int lhs_symb_id) const override;
|
optional<int> findTargetVariable(int lhs_symb_id) const override;
|
||||||
expr_t substituteDiff(const lag_equivalence_table_t &nodes, subst_table_t &subst_table, vector<BinaryOpNode *> &neweqs) const override;
|
expr_t substituteDiff(const lag_equivalence_table_t &nodes, subst_table_t &subst_table, vector<BinaryOpNode *> &neweqs) const override;
|
||||||
expr_t substituteUnaryOpNodes(const lag_equivalence_table_t &nodes, subst_table_t &subst_table, vector<BinaryOpNode *> &neweqs) const override;
|
expr_t substituteUnaryOpNodes(const lag_equivalence_table_t &nodes, subst_table_t &subst_table, vector<BinaryOpNode *> &neweqs) const override;
|
||||||
void computeSubExprContainingVariable(int symb_id, int lag, set<expr_t> &contain_var) const override;
|
void computeSubExprContainingVariable(int symb_id, int lag, set<expr_t> &contain_var) const override;
|
||||||
|
|
|
@ -83,7 +83,7 @@ TrendComponentModelTable::setRhs(map<string, vector<set<pair<int, int>>>> rhs_ar
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
TrendComponentModelTable::setTargetVar(map<string, vector<int>> target_vars_arg)
|
TrendComponentModelTable::setTargetVar(map<string, vector<optional<int>>> target_vars_arg)
|
||||||
{
|
{
|
||||||
target_vars = move(target_vars_arg);
|
target_vars = move(target_vars_arg);
|
||||||
}
|
}
|
||||||
|
@ -319,8 +319,8 @@ TrendComponentModelTable::writeOutput(const string &basename, ostream &output) c
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
output << "M_.trend_component." << name << ".target_vars = [";
|
output << "M_.trend_component." << name << ".target_vars = [";
|
||||||
for (auto it : target_vars.at(name))
|
for (const optional<int> &it : target_vars.at(name))
|
||||||
output << (it >= 0 ? symbol_table.getTypeSpecificID(it) + 1 : -1) << " ";
|
output << (it ? symbol_table.getTypeSpecificID(*it) + 1 : -1) << " ";
|
||||||
output << "];" << endl;
|
output << "];" << endl;
|
||||||
|
|
||||||
vector<string> target_eqtags_vec = target_eqtags.at(name);
|
vector<string> target_eqtags_vec = target_eqtags.at(name);
|
||||||
|
|
|
@ -24,6 +24,7 @@
|
||||||
#include <map>
|
#include <map>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
#include <optional>
|
||||||
|
|
||||||
#include "ExprNode.hh"
|
#include "ExprNode.hh"
|
||||||
#include "SymbolTable.hh"
|
#include "SymbolTable.hh"
|
||||||
|
@ -49,7 +50,7 @@ private:
|
||||||
map<string, vector<set<pair<int, int>>>> rhs;
|
map<string, vector<set<pair<int, int>>>> rhs;
|
||||||
map<string, vector<bool>> diff;
|
map<string, vector<bool>> diff;
|
||||||
map<string, vector<expr_t>> lhs_expr_t;
|
map<string, vector<expr_t>> lhs_expr_t;
|
||||||
map<string, vector<int>> target_vars;
|
map<string, vector<optional<int>>> target_vars;
|
||||||
map<string, map<tuple<int, int, int>, expr_t>> AR; // name -> (eqn, lag, lhs_symb_id) -> expr_t
|
map<string, map<tuple<int, int, int>, expr_t>> AR; // name -> (eqn, lag, lhs_symb_id) -> expr_t
|
||||||
/* Note that A0 in the trend-component model context is not the same thing as
|
/* Note that A0 in the trend-component model context is not the same thing as
|
||||||
in the structural VAR context. */
|
in the structural VAR context. */
|
||||||
|
@ -89,7 +90,7 @@ public:
|
||||||
void setMaxLags(map<string, vector<int>> max_lags_arg);
|
void setMaxLags(map<string, vector<int>> max_lags_arg);
|
||||||
void setDiff(map<string, vector<bool>> diff_arg);
|
void setDiff(map<string, vector<bool>> diff_arg);
|
||||||
void setOrigDiffVar(map<string, vector<int>> orig_diff_var_arg);
|
void setOrigDiffVar(map<string, vector<int>> orig_diff_var_arg);
|
||||||
void setTargetVar(map<string, vector<int>> target_vars_arg);
|
void setTargetVar(map<string, vector<optional<int>>> target_vars_arg);
|
||||||
void setAR(map<string, map<tuple<int, int, int>, expr_t>> AR_arg);
|
void setAR(map<string, map<tuple<int, int, int>, expr_t>> AR_arg);
|
||||||
void setA0(map<string, map<tuple<int, int>, expr_t>> A0_arg,
|
void setA0(map<string, map<tuple<int, int>, expr_t>> A0_arg,
|
||||||
map<string, map<tuple<int, int>, expr_t>> A0star_arg);
|
map<string, map<tuple<int, int>, expr_t>> A0star_arg);
|
||||||
|
|
Loading…
Reference in New Issue