From 3d9ac26aa604a1ed0f839ac885f121f0f204de28 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Villemot?= <sebastien@dynare.org> Date: Tue, 27 Sep 2022 12:51:22 +0200 Subject: [PATCH] =?UTF-8?q?Remove=20all=20instances=20of=20the=20=E2=80=9C?= =?UTF-8?q?map.find(key)->second=E2=80=9D=20pattern?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This is unsafe since the find() method can return a past-the-end iterator, which should be tested for. Replace most instances by calls to the std::map::at() method (which throws if the key is unknown), and which is incidentally more readable. --- src/ConfigFile.cc | 2 +- src/DynamicModel.cc | 2 +- src/DynamicModel.hh | 16 ++++++++-------- src/ExternalFunctionsTable.hh | 15 +++++++++------ src/ModelTree.cc | 4 ++-- src/ModelTree.hh | 12 ++++++------ src/StaticModel.cc | 2 +- src/StaticModel.hh | 12 ++++++------ src/SubModel.cc | 36 +++++++++++++++++------------------ src/macro/Environment.cc | 2 +- 10 files changed, 53 insertions(+), 50 deletions(-) diff --git a/src/ConfigFile.cc b/src/ConfigFile.cc index de1da274..7b5fb607 100644 --- a/src/ConfigFile.cc +++ b/src/ConfigFile.cc @@ -738,7 +738,7 @@ ConfigFile::writeCluster(ostream &output) const << "'ProgramConfig', '" << follower_node.second.programConfig << "', " << "'MatlabOctavePath', '" << follower_node.second.matlabOctavePath << "', " << "'OperatingSystem', '" << follower_node.second.operatingSystem << "', " - << "'NodeWeight', '" << (cluster_it->second.member_nodes.find(follower_node.first))->second << "', " + << "'NodeWeight', '" << cluster_it->second.member_nodes.at(follower_node.first) << "', " << "'NumberOfThreadsPerJob', " << follower_node.second.numberOfThreadsPerJob << ", "; if (follower_node.second.singleCompThread) diff --git a/src/DynamicModel.cc b/src/DynamicModel.cc index 2baf93c7..b7c860c0 100644 --- a/src/DynamicModel.cc +++ b/src/DynamicModel.cc @@ -4130,7 +4130,7 @@ DynamicModel::substituteLeadLagInternal(AuxVarType type, bool deterministic_mode for (int used_local_var : used_local_vars) { - const expr_t value = local_variables_table.find(used_local_var)->second; + const expr_t value = local_variables_table.at(used_local_var); expr_t subst; switch (type) { diff --git a/src/DynamicModel.hh b/src/DynamicModel.hh index 458de8d1..93424eb5 100644 --- a/src/DynamicModel.hh +++ b/src/DynamicModel.hh @@ -916,17 +916,17 @@ DynamicModel::writeParamsDerivativesFile(const string &basename) const << "gp = zeros(" << equations.size() << ", " << getJacobianColsNbr() << ", " << symbol_table.param_nbr() << ");" << endl << gp_output.str() << "if nargout >= 3" << endl - << "rpp = zeros(" << params_derivatives.find({ 0, 2 })->second.size() << ",4);" << endl + << "rpp = zeros(" << params_derivatives.at({ 0, 2 }).size() << ",4);" << endl << rpp_output.str() - << "gpp = zeros(" << params_derivatives.find({ 1, 2 })->second.size() << ",5);" << endl + << "gpp = zeros(" << params_derivatives.at({ 1, 2 }).size() << ",5);" << endl << gpp_output.str() << "end" << endl << "if nargout >= 5" << endl - << "hp = zeros(" << params_derivatives.find({ 2, 1 })->second.size() << ",5);" << endl + << "hp = zeros(" << params_derivatives.at({ 2, 1 }).size() << ",5);" << endl << hp_output.str() << "end" << endl << "if nargout >= 6" << endl - << "g3p = zeros(" << params_derivatives.find({ 3, 1 })->second.size() << ",6);" << endl + << "g3p = zeros(" << params_derivatives.at({ 3, 1 }).size() << ",6);" << endl << g3p_output.str() << "end" << endl << "end" << endl; @@ -952,19 +952,19 @@ DynamicModel::writeParamsDerivativesFile(const string &basename) const << "@inbounds begin" << endl << gp_output.str() << "end" << endl - << "rpp = zeros(" << params_derivatives.find({ 0, 2 })->second.size() << ",4);" << endl + << "rpp = zeros(" << params_derivatives.at({ 0, 2 }).size() << ",4);" << endl << "@inbounds begin" << endl << rpp_output.str() << "end" << endl - << "gpp = zeros(" << params_derivatives.find({ 1, 2 })->second.size() << ",5);" << endl + << "gpp = zeros(" << params_derivatives.at({ 1, 2 }).size() << ",5);" << endl << "@inbounds begin" << endl << gpp_output.str() << "end" << endl - << "hp = zeros(" << params_derivatives.find({ 2, 1 })->second.size() << ",5);" << endl + << "hp = zeros(" << params_derivatives.at({ 2, 1 }).size() << ",5);" << endl << "@inbounds begin" << endl << hp_output.str() << "end" << endl - << "g3p = zeros(" << params_derivatives.find({ 3, 1 })->second.size() << ",6);" << endl + << "g3p = zeros(" << params_derivatives.at({ 3, 1 }).size() << ",6);" << endl << "@inbounds begin" << endl << g3p_output.str() << "end" << endl diff --git a/src/ExternalFunctionsTable.hh b/src/ExternalFunctionsTable.hh index 1de10d9c..39fbd67f 100644 --- a/src/ExternalFunctionsTable.hh +++ b/src/ExternalFunctionsTable.hh @@ -80,8 +80,9 @@ ExternalFunctionsTable::exists(int symb_id) const inline int ExternalFunctionsTable::getNargs(int symb_id) const noexcept(false) { - if (exists(symb_id)) - return externalFunctionTable.find(symb_id)->second.nargs; + if (auto it = externalFunctionTable.find(symb_id); + it != externalFunctionTable.end()) + return it->second.nargs; else throw UnknownExternalFunctionSymbolIDException(symb_id); } @@ -89,8 +90,9 @@ ExternalFunctionsTable::getNargs(int symb_id) const noexcept(false) inline int ExternalFunctionsTable::getFirstDerivSymbID(int symb_id) const noexcept(false) { - if (exists(symb_id)) - return externalFunctionTable.find(symb_id)->second.firstDerivSymbID; + if (auto it = externalFunctionTable.find(symb_id); + it != externalFunctionTable.end()) + return it->second.firstDerivSymbID; else throw UnknownExternalFunctionSymbolIDException(symb_id); } @@ -98,8 +100,9 @@ ExternalFunctionsTable::getFirstDerivSymbID(int symb_id) const noexcept(false) inline int ExternalFunctionsTable::getSecondDerivSymbID(int symb_id) const noexcept(false) { - if (exists(symb_id)) - return externalFunctionTable.find(symb_id)->second.secondDerivSymbID; + if (auto it = externalFunctionTable.find(symb_id); + it != externalFunctionTable.end()) + return it->second.secondDerivSymbID; else throw UnknownExternalFunctionSymbolIDException(symb_id); } diff --git a/src/ModelTree.cc b/src/ModelTree.cc index 11ec1a0d..affb101a 100644 --- a/src/ModelTree.cc +++ b/src/ModelTree.cc @@ -1188,7 +1188,7 @@ ModelTree::writeJsonModelLocalVariables(ostream &output, bool write_tef_terms, d if (exchange(printed_something, true)) output << ", "; - expr_t value = local_variables_table.find(id)->second; + expr_t value = local_variables_table.at(id); if (write_tef_terms) { vector<string> efout; @@ -1323,7 +1323,7 @@ ModelTree::writeLatexModelFile(const string &mod_basename, const string &latex_b // Write model local variables for (int id : local_variables_vector) { - expr_t value = local_variables_table.find(id)->second; + expr_t value = local_variables_table.at(id); content_output << R"(\begin{dmath*})" << endl << symbol_table.getTeXName(id) << " = "; diff --git a/src/ModelTree.hh b/src/ModelTree.hh index 84e2b085..9cea1fbf 100644 --- a/src/ModelTree.hh +++ b/src/ModelTree.hh @@ -1587,7 +1587,7 @@ ModelTree::writeJsonParamsDerivativesHelper(bool writeDetails) const << R"(, "nparamcols": )" << symbol_table.param_nbr() << R"(, "entries": [)"; for (bool printed_something {false}; - const auto &[vidx, d] : params_derivatives.find({ 0, 1 })->second) + const auto &[vidx, d] : params_derivatives.at({ 0, 1 })) { if (exchange(printed_something, true)) rp_output << ", "; @@ -1618,7 +1618,7 @@ ModelTree::writeJsonParamsDerivativesHelper(bool writeDetails) const << R"(, "nparamcols": )" << symbol_table.param_nbr() << R"(, "entries": [)"; for (bool printed_something {false}; - const auto &[vidx, d] : params_derivatives.find({ 1, 1 })->second) + const auto &[vidx, d] : params_derivatives.at({ 1, 1 })) { if (exchange(printed_something, true)) gp_output << ", "; @@ -1656,7 +1656,7 @@ ModelTree::writeJsonParamsDerivativesHelper(bool writeDetails) const << R"(, "nparam2cols": )" << symbol_table.param_nbr() << R"(, "entries": [)"; for (bool printed_something {false}; - const auto &[vidx, d] : params_derivatives.find({ 0, 2 })->second) + const auto &[vidx, d] : params_derivatives.at({ 0, 2 })) { if (exchange(printed_something, true)) rpp_output << ", "; @@ -1690,7 +1690,7 @@ ModelTree::writeJsonParamsDerivativesHelper(bool writeDetails) const << R"(, "nparam2cols": )" << symbol_table.param_nbr() << R"(, "entries": [)"; for (bool printed_something {false}; - const auto &[vidx, d] : params_derivatives.find({ 1, 2 })->second) + const auto &[vidx, d] : params_derivatives.at({ 1, 2 })) { if (exchange(printed_something, true)) gpp_output << ", "; @@ -1732,7 +1732,7 @@ ModelTree::writeJsonParamsDerivativesHelper(bool writeDetails) const << R"(, "nparamcols": )" << symbol_table.param_nbr() << R"(, "entries": [)"; for (bool printed_something {false}; - const auto &[vidx, d] : params_derivatives.find({ 2, 1 })->second) + const auto &[vidx, d] : params_derivatives.at({ 2, 1 })) { if (exchange(printed_something, true)) hp_output << ", "; @@ -1779,7 +1779,7 @@ ModelTree::writeJsonParamsDerivativesHelper(bool writeDetails) const << R"(, "nparamcols": )" << symbol_table.param_nbr() << R"(, "entries": [)"; for (bool printed_something {false}; - const auto &[vidx, d] : params_derivatives.find({ 3, 1 })->second) + const auto &[vidx, d] : params_derivatives.at({ 3, 1 })) { if (exchange(printed_something, true)) g3p_output << ", "; diff --git a/src/StaticModel.cc b/src/StaticModel.cc index f3648d53..ea1fe969 100644 --- a/src/StaticModel.cc +++ b/src/StaticModel.cc @@ -53,7 +53,7 @@ StaticModel::StaticModel(const DynamicModel &m) : { // Convert model local variables (need to be done first) for (int it : m.local_variables_vector) - AddLocalVariable(it, m.local_variables_table.find(it)->second->toStatic(*this)); + AddLocalVariable(it, m.local_variables_table.at(it)->toStatic(*this)); // Convert equations int static_only_index = 0; diff --git a/src/StaticModel.hh b/src/StaticModel.hh index 7659456d..3435c8e7 100644 --- a/src/StaticModel.hh +++ b/src/StaticModel.hh @@ -284,13 +284,13 @@ StaticModel::writeParamsDerivativesFile(const string &basename) const << symbol_table.param_nbr() << ");" << endl << gp_output.str() << "if nargout >= 3" << endl - << "rpp = zeros(" << params_derivatives.find({ 0, 2 })->second.size() << ",4);" << endl + << "rpp = zeros(" << params_derivatives.at({ 0, 2 }).size() << ",4);" << endl << rpp_output.str() - << "gpp = zeros(" << params_derivatives.find({ 1, 2 })->second.size() << ",5);" << endl + << "gpp = zeros(" << params_derivatives.at({ 1, 2 }).size() << ",5);" << endl << gpp_output.str() << "end" << endl << "if nargout >= 5" << endl - << "hp = zeros(" << params_derivatives.find({ 2, 1 })->second.size() << ",5);" << endl + << "hp = zeros(" << params_derivatives.at({ 2, 1 }).size() << ",5);" << endl << hp_output.str() << "end" << endl << "end" << endl; @@ -316,15 +316,15 @@ StaticModel::writeParamsDerivativesFile(const string &basename) const << "@inbounds begin" << endl << gp_output.str() << "end" << endl - << "rpp = zeros(" << params_derivatives.find({ 0, 2 })->second.size() << ",4);" << endl + << "rpp = zeros(" << params_derivatives.at({ 0, 2 }).size() << ",4);" << endl << "@inbounds begin" << endl << rpp_output.str() << "end" << endl - << "gpp = zeros(" << params_derivatives.find({ 1, 2 })->second.size() << ",5);" << endl + << "gpp = zeros(" << params_derivatives.at({ 1, 2 }).size() << ",5);" << endl << "@inbounds begin" << endl << gpp_output.str() << "end" << endl - << "hp = zeros(" << params_derivatives.find({ 2, 1 })->second.size() << ",5);" << endl + << "hp = zeros(" << params_derivatives.at({ 2, 1 }).size() << ",5);" << endl << "@inbounds begin" << endl << hp_output.str() << "end" << endl diff --git a/src/SubModel.cc b/src/SubModel.cc index 17d4d6b1..adc91816 100644 --- a/src/SubModel.cc +++ b/src/SubModel.cc @@ -130,7 +130,7 @@ const vector<string> & TrendComponentModelTable::getEqTags(const string &name_arg) const { checkModelName(name_arg); - return eqtags.find(name_arg)->second; + return eqtags.at(name_arg); } void @@ -148,28 +148,28 @@ const vector<int> & TrendComponentModelTable::getNonTargetLhs(const string &name_arg) const { checkModelName(name_arg); - return nontarget_lhs.find(name_arg)->second; + return nontarget_lhs.at(name_arg); } const vector<int> & TrendComponentModelTable::getTargetLhs(const string &name_arg) const { checkModelName(name_arg); - return target_lhs.find(name_arg)->second; + return target_lhs.at(name_arg); } const vector<int> & TrendComponentModelTable::getLhs(const string &name_arg) const { checkModelName(name_arg); - return lhs.find(name_arg)->second; + return lhs.at(name_arg); } const vector<expr_t> & TrendComponentModelTable::getLhsExprT(const string &name_arg) const { checkModelName(name_arg); - return lhs_expr_t.find(name_arg)->second; + return lhs_expr_t.at(name_arg); } const map<string, vector<string>> & @@ -194,7 +194,7 @@ const vector<int> & TrendComponentModelTable::getTargetEqNums(const string &name_arg) const { checkModelName(name_arg); - return target_eqnums.find(name_arg)->second; + return target_eqnums.at(name_arg); } const map<string, vector<int>> & @@ -207,21 +207,21 @@ const vector<int> & TrendComponentModelTable::getNonTargetEqNums(const string &name_arg) const { checkModelName(name_arg); - return nontarget_eqnums.find(name_arg)->second; + return nontarget_eqnums.at(name_arg); } const vector<int> & TrendComponentModelTable::getEqNums(const string &name_arg) const { checkModelName(name_arg); - return eqnums.find(name_arg)->second; + return eqnums.at(name_arg); } const vector<int> & TrendComponentModelTable::getMaxLags(const string &name_arg) const { checkModelName(name_arg); - return max_lags.find(name_arg)->second; + return max_lags.at(name_arg); } int @@ -237,7 +237,7 @@ const vector<bool> & TrendComponentModelTable::getDiff(const string &name_arg) const { checkModelName(name_arg); - return diff.find(name_arg)->second; + return diff.at(name_arg); } void @@ -575,7 +575,7 @@ const vector<string> & VarModelTable::getEqTags(const string &name_arg) const { checkModelName(name_arg); - return eqtags.find(name_arg)->second; + return eqtags.at(name_arg); } void @@ -643,14 +643,14 @@ const vector<bool> & VarModelTable::getDiff(const string &name_arg) const { checkModelName(name_arg); - return diff.find(name_arg)->second; + return diff.at(name_arg); } const vector<int> & VarModelTable::getEqNums(const string &name_arg) const { checkModelName(name_arg); - return eqnums.find(name_arg)->second; + return eqnums.at(name_arg); } void @@ -693,7 +693,7 @@ const vector<int> & VarModelTable::getMaxLags(const string &name_arg) const { checkModelName(name_arg); - return max_lags.find(name_arg)->second; + return max_lags.at(name_arg); } int @@ -709,28 +709,28 @@ const vector<int> & VarModelTable::getLhs(const string &name_arg) const { checkModelName(name_arg); - return lhs.find(name_arg)->second; + return lhs.at(name_arg); } const vector<int> & VarModelTable::getLhsOrigIds(const string &name_arg) const { checkModelName(name_arg); - return lhs_orig_symb_ids.find(name_arg)->second; + return lhs_orig_symb_ids.at(name_arg); } const vector<set<pair<int, int>>> & VarModelTable::getRhs(const string &name_arg) const { checkModelName(name_arg); - return rhs.find(name_arg)->second; + return rhs.at(name_arg); } const vector<expr_t> & VarModelTable::getLhsExprT(const string &name_arg) const { checkModelName(name_arg); - return lhs_expr_t.find(name_arg)->second; + return lhs_expr_t.at(name_arg); } diff --git a/src/macro/Environment.cc b/src/macro/Environment.cc index 7ceb7537..a9b56658 100644 --- a/src/macro/Environment.cc +++ b/src/macro/Environment.cc @@ -123,7 +123,7 @@ Environment::print(ostream &output, const vector<string> &vars, const optional<i else for (const auto &it : vars) if (isFunctionDefined(it)) - printFunction(output, functions.find(it)->second, line, save); + printFunction(output, functions.at(it), line, save); if (parent) parent->print(output, vars, line, save); -- GitLab