diff --git a/src/NumericalInitialization.cc b/src/NumericalInitialization.cc index 344b647447d0a2b7365eb5ff64c1d37171370fc9..92f0ca27dde499c603e0e0d6737ac74d7dc7ab7a 100644 --- a/src/NumericalInitialization.cc +++ b/src/NumericalInitialization.cc @@ -89,11 +89,11 @@ InitOrEndValStatement::InitOrEndValStatement(init_values_t init_values_arg, void InitOrEndValStatement::fillEvalContext(eval_context_t &eval_context) const { - for (const auto &init_value : init_values) + for (auto [symb_id, value] : init_values) { try { - eval_context[init_value.first] = (init_value.second)->eval(eval_context); + eval_context[symb_id] = value->eval(eval_context); } catch (ExprNode::EvalException &e) { @@ -119,8 +119,8 @@ InitOrEndValStatement::getUninitializedVariables(SymbolType type) exit(EXIT_FAILURE); } - for (const auto &init_value : init_values) - if (auto sit = unused.find(init_value.first); + for (auto [symb_id, value] : init_values) + if (auto sit = unused.find(symb_id); sit != unused.end()) unused.erase(sit); @@ -130,11 +130,8 @@ InitOrEndValStatement::getUninitializedVariables(SymbolType type) void InitOrEndValStatement::writeInitValues(ostream &output) const { - for (const auto &init_value : init_values) + for (auto [symb_id, value] : init_values) { - const int symb_id = init_value.first; - const expr_t expression = init_value.second; - SymbolType type = symbol_table.getType(symb_id); int tsid = symbol_table.getTypeSpecificID(symb_id) + 1; @@ -159,7 +156,7 @@ InitOrEndValStatement::writeInitValues(ostream &output) const } output << "(" << tsid << ") = "; - expression->writeOutput(output); + value->writeOutput(output); output << ";" << endl; } } @@ -168,12 +165,13 @@ void InitOrEndValStatement::writeJsonInitValues(ostream &output) const { for (auto it = init_values.begin(); - it != init_values.end(); it++) + it != init_values.end(); ++it) { if (it != init_values.begin()) output << ", "; - output << R"({"name": ")" << symbol_table.getName(it->first) << R"(", )" << R"("value": ")"; - it->second->writeJsonOutput(output, {}, {}); + auto [symb_id, value] = *it; + output << R"({"name": ")" << symbol_table.getName(symb_id) << R"(", )" << R"("value": ")"; + value->writeJsonOutput(output, {}, {}); output << R"("})"; } } @@ -313,13 +311,14 @@ HistValStatement::checkPass(ModFileStructure &mod_file_struct, WarningConsolidat set<int> unused_endo = symbol_table.getEndogenous(); set<int> unused_exo = symbol_table.getExogenous(); - for (const auto &hist_value : hist_values) + for (const auto &[key, value] : hist_values) { - if (auto sit = unused_endo.find(hist_value.first.first); + int symb_id = key.first; + if (auto sit = unused_endo.find(symb_id); sit != unused_endo.end()) unused_endo.erase(sit); - if (auto sit = unused_exo.find(hist_value.first.first); + if (auto sit = unused_exo.find(symb_id); sit != unused_exo.end()) unused_exo.erase(sit); } @@ -361,14 +360,12 @@ HistValStatement::writeOutput(ostream &output, const string &basename, bool mini << (symbol_table.exo_det_nbr() > 0 ? "M_.exo_det_names; " : "") << "]);" << endl; - for (const auto &hist_value : hist_values) + for (const auto &[key, value] : hist_values) { - int symb_id = hist_value.first.first; - int lag = hist_value.first.second; - const expr_t expression = hist_value.second; + auto [symb_id, lag] = key; output << "M_.histval_dseries{'" << symbol_table.getName(symb_id) << "'}(dates('" << lag << "Y'))="; - expression->writeOutput(output); + value->writeOutput(output); output << ";" << endl; } @@ -391,10 +388,11 @@ HistValStatement::writeJsonOutput(ostream &output) const for (auto it = hist_values.begin(); it != hist_values.end(); ++it) { + auto [symb_id, lag] = it->first; if (it != hist_values.begin()) output << ", "; - output << R"({ "name": ")" << symbol_table.getName(it->first.first) << R"(")" - << R"(, "lag": )" << it->first.second + output << R"({ "name": ")" << symbol_table.getName(symb_id) << R"(")" + << R"(, "lag": )" << lag << R"(, "value": ")"; it->second->writeJsonOutput(output, {}, {}); output << R"("})"; diff --git a/src/ParsingDriver.cc b/src/ParsingDriver.cc index 591a07633896f6d9d4d30786d9b93095db372211..fafa902228ee9aa1e9806a1f23e77ab9489f2c08 100644 --- a/src/ParsingDriver.cc +++ b/src/ParsingDriver.cc @@ -552,7 +552,7 @@ ParsingDriver::hist_val(const string &name, const string &lag, expr_t rhs) if (hist_values.find(key) != hist_values.end()) error("hist_val: (" + name + ", " + lag + ") declared twice"); - hist_values[key] = rhs; + hist_values[move(key)] = rhs; } void