From ef02b794862a1bd19cdfe9912af697ea66fb9182 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Villemot?= Date: Wed, 4 May 2022 14:42:03 +0200 Subject: [PATCH] Various minor simplifications --- src/ComputingTasks.cc | 76 ++++++++++++++-------------------- src/DataTree.cc | 5 +-- src/EquationTags.cc | 2 +- src/EquationTags.hh | 8 ++-- src/ExprNode.cc | 14 +++---- src/ModFile.cc | 2 +- src/NumericalInitialization.cc | 13 ++---- src/ParsingDriver.cc | 23 ++++------ src/SymbolTable.cc | 10 ++--- 9 files changed, 59 insertions(+), 94 deletions(-) diff --git a/src/ComputingTasks.cc b/src/ComputingTasks.cc index e994c42a..4dbb4501 100644 --- a/src/ComputingTasks.cc +++ b/src/ComputingTasks.cc @@ -362,12 +362,10 @@ StochSimulStatement::checkPass(ModFileStructure &mod_file_struct, WarningConsoli || mod_file_struct.order_option >= 3) mod_file_struct.k_order_solver = true; - if (auto it = options_list.num_options.find("hp_filter"), - it1 = options_list.num_options.find("bandpass.indicator"), - it2 = options_list.num_options.find("one_sided_hp_filter"); - (it != options_list.num_options.end() && it1 != options_list.num_options.end()) - || (it != options_list.num_options.end() && it2 != options_list.num_options.end()) - || (it1 != options_list.num_options.end() && it2 != options_list.num_options.end())) + if (bool hp = options_list.num_options.find("hp_filter") != options_list.num_options.end(), + bandpass = options_list.num_options.find("bandpass.indicator") != options_list.num_options.end(), + one_sided_hp = options_list.num_options.find("one_sided_hp_filter") != options_list.num_options.end(); + (hp && bandpass) || (hp && one_sided_hp) || (bandpass && one_sided_hp)) { cerr << "ERROR: stoch_simul: can only use one of hp, one-sided hp, and bandpass filters" << endl; @@ -2556,14 +2554,14 @@ MSSBVAREstimationStatement::checkPass(ModFileStructure &mod_file_struct, Warning { mod_file_struct.bvar_present = true; - if (options_list.num_options.find("ms.create_init") == options_list.num_options.end()) - if (options_list.string_options.find("datafile") == options_list.string_options.end() - || options_list.num_options.find("ms.initial_year") == options_list.num_options.end()) - { - cerr << "ERROR: If you do not pass no_create_init to ms_estimation, " - << "you must pass the datafile and initial_year options." << endl; - exit(EXIT_FAILURE); - } + if (options_list.num_options.find("ms.create_init") == options_list.num_options.end() + && (options_list.string_options.find("datafile") == options_list.string_options.end() + || options_list.num_options.find("ms.initial_year") == options_list.num_options.end())) + { + cerr << "ERROR: If you do not pass no_create_init to ms_estimation, " + << "you must pass the datafile and initial_year options." << endl; + exit(EXIT_FAILURE); + } } void @@ -2708,11 +2706,10 @@ MSSBVARIrfStatement::checkPass(ModFileStructure &mod_file_struct, WarningConsoli { mod_file_struct.bvar_present = true; - bool regime_present = options_list.num_options.find("ms.regime") != options_list.num_options.end(); - bool regimes_present = options_list.num_options.find("ms.regimes") != options_list.num_options.end(); - bool filtered_probabilities_present = options_list.num_options.find("ms.filtered_probabilities") != options_list.num_options.end(); - - if ((filtered_probabilities_present && regime_present) + if (bool regime_present = options_list.num_options.find("ms.regime") != options_list.num_options.end(), + regimes_present = options_list.num_options.find("ms.regimes") != options_list.num_options.end(), + filtered_probabilities_present = options_list.num_options.find("ms.filtered_probabilities") != options_list.num_options.end(); + (filtered_probabilities_present && regime_present) || (filtered_probabilities_present && regimes_present) || (regimes_present && regime_present)) { @@ -2806,11 +2803,10 @@ MSSBVARVarianceDecompositionStatement::checkPass(ModFileStructure &mod_file_stru { mod_file_struct.bvar_present = true; - bool regime_present = options_list.num_options.find("ms.regime") != options_list.num_options.end(); - bool regimes_present = options_list.num_options.find("ms.regimes") != options_list.num_options.end(); - bool filtered_probabilities_present = options_list.num_options.find("ms.filtered_probabilities") != options_list.num_options.end(); - - if ((filtered_probabilities_present && regime_present) + if (bool regime_present = options_list.num_options.find("ms.regime") != options_list.num_options.end(), + regimes_present = options_list.num_options.find("ms.regimes") != options_list.num_options.end(), + filtered_probabilities_present = options_list.num_options.find("ms.filtered_probabilities") != options_list.num_options.end(); + (filtered_probabilities_present && regime_present) || (filtered_probabilities_present && regimes_present) || (regimes_present && regime_present)) { @@ -3681,18 +3677,12 @@ SvarStatement::SvarStatement(OptionsList options_list_arg) : void SvarStatement::checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings) { - auto it0 = options_list.string_options.find("ms.coefficients"), - it1 = options_list.string_options.find("ms.variances"), - it2 = options_list.string_options.find("ms.constants"); - assert((it0 != options_list.string_options.end() - && it1 == options_list.string_options.end() - && it2 == options_list.string_options.end()) - || (it0 == options_list.string_options.end() - && it1 != options_list.string_options.end() - && it2 == options_list.string_options.end()) - || (it0 == options_list.string_options.end() - && it1 == options_list.string_options.end() - && it2 != options_list.string_options.end())); + bool has_coefficients = options_list.string_options.find("ms.coefficients") != options_list.string_options.end(), + has_variances = options_list.string_options.find("ms.variances") != options_list.string_options.end(), + has_constants = options_list.string_options.find("ms.constants") != options_list.string_options.end(); + assert((has_coefficients && !has_variances && !has_constants) + || (!has_coefficients && has_variances && !has_constants) + || (!has_coefficients && !has_variances && has_constants)); } void @@ -3795,15 +3785,14 @@ EstimationDataStatement::checkPass(ModFileStructure &mod_file_struct, WarningCon exit(EXIT_FAILURE); } - if (options_list.string_options.find("file") == options_list.string_options.end() - && options_list.string_options.find("series") == options_list.string_options.end()) + bool has_file = options_list.string_options.find("file") != options_list.string_options.end(), + has_series = options_list.string_options.find("series") != options_list.string_options.end(); + if (!has_file && !has_series) { cerr << "ERROR: The file or series option must be passed to the data statement." << endl; exit(EXIT_FAILURE); } - - if (options_list.string_options.find("file") != options_list.string_options.end() - && options_list.string_options.find("series") != options_list.string_options.end()) + if (has_file && has_series) { cerr << "ERROR: The file and series options cannot be used simultaneously in the data statement." << endl; exit(EXIT_FAILURE); @@ -4206,9 +4195,8 @@ BasicPriorStatement::checkPass(ModFileStructure &mod_file_struct, WarningConsoli exit(EXIT_FAILURE); } - if (auto it_stdev = options_list.num_options.find("stdev"); - (it_stdev == options_list.num_options.end() && !variance) - || (it_stdev != options_list.num_options.end() && variance)) + if (bool has_stdev = options_list.num_options.find("stdev") != options_list.num_options.end(); + (!has_stdev && !variance) || (has_stdev && variance)) { cerr << "ERROR: You must pass exactly one of stdev and variance to the prior statement." << endl; exit(EXIT_FAILURE); diff --git a/src/DataTree.cc b/src/DataTree.cc index 654ff9d5..7574a895 100644 --- a/src/DataTree.cc +++ b/src/DataTree.cc @@ -1,5 +1,5 @@ /* - * Copyright © 2003-2021 Dynare Team + * Copyright © 2003-2022 Dynare Team * * This file is part of Dynare. * @@ -733,8 +733,7 @@ DataTree::AddLocalVariable(int symb_id, expr_t value) noexcept(false) assert(symbol_table.getType(symb_id) == SymbolType::modelLocalVariable); // Throw an exception if symbol already declared - if (auto it = local_variables_table.find(symb_id); - it != local_variables_table.end()) + if (local_variables_table.find(symb_id) != local_variables_table.end()) throw LocalVariableException(symbol_table.getName(symb_id)); local_variables_table[symb_id] = value; diff --git a/src/EquationTags.cc b/src/EquationTags.cc index 75b974a7..026c1739 100644 --- a/src/EquationTags.cc +++ b/src/EquationTags.cc @@ -54,7 +54,7 @@ EquationTags::getEqnByTag(const string &key, const string &value) const void EquationTags::erase(const set &eqns, const map &old_eqn_num_2_new) { - for (const auto &eqn : eqns) + for (int eqn : eqns) eqn_tags.erase(eqn); for (const auto & [oldeqn, neweqn] : old_eqn_num_2_new) diff --git a/src/EquationTags.hh b/src/EquationTags.hh index 04ed8a10..c79b0500 100644 --- a/src/EquationTags.hh +++ b/src/EquationTags.hh @@ -70,8 +70,8 @@ public: //! Get equation tags for a given equation inline map getTagsByEqn(const int eqn) const { - if (eqn_tags.find(eqn) != eqn_tags.end()) - return eqn_tags.find(eqn)->second; + if (auto it = eqn_tags.find(eqn); it != eqn_tags.end()) + return it->second; return map{}; } @@ -118,13 +118,13 @@ public: //! Returns true if equation tag with key exists for a given equation inline bool exists(const int eqn, const string &key) const { - return exists(eqn) ? eqn_tags.at(eqn).find(key) != eqn_tags.at(eqn).end() : false; + return exists(eqn) && eqn_tags.at(eqn).find(key) != eqn_tags.at(eqn).end(); } //! Returns true if equation tag with key and value exists for a given equation inline bool exists(const int eqn, const string &key, const string &value) const { - return exists(eqn, key) ? eqn_tags.at(eqn).at(key) == value : false; + return exists(eqn, key) && eqn_tags.at(eqn).at(key) == value; } //! Various functions to write equation tags diff --git a/src/ExprNode.cc b/src/ExprNode.cc index ee8ac365..6f2c3e89 100644 --- a/src/ExprNode.cc +++ b/src/ExprNode.cc @@ -39,7 +39,7 @@ ExprNode::getDerivative(int deriv_id) prepareForDerivation(); // Return zero if derivative is necessarily null (using symbolic a priori) - if (auto it = non_null_derivatives.find(deriv_id); it == non_null_derivatives.end()) + if (non_null_derivatives.find(deriv_id) == non_null_derivatives.end()) return datatree.Zero; // If derivative is stored in cache, use the cached value, otherwise compute it (and cache it) @@ -93,7 +93,7 @@ ExprNode::checkIfTemporaryTermThenWrite(ostream &output, ExprNodeOutputType outp const temporary_terms_t &temporary_terms, const temporary_terms_idxs_t &temporary_terms_idxs) const { - if (auto it = temporary_terms.find(const_cast(this)); it == temporary_terms.end()) + if (temporary_terms.find(const_cast(this)) == temporary_terms.end()) return false; auto it2 = temporary_terms_idxs.find(const_cast(this)); @@ -6937,9 +6937,7 @@ AbstractExternalFunctionNode::differentiateForwardVars(const vector &sub bool AbstractExternalFunctionNode::alreadyWrittenAsTefTerm(int the_symb_id, const deriv_node_temp_terms_t &tef_terms) const { - if (tef_terms.find({ the_symb_id, arguments }) != tef_terms.end()) - return true; - return false; + return tef_terms.find({ the_symb_id, arguments }) != tef_terms.end(); } int @@ -6970,8 +6968,7 @@ AbstractExternalFunctionNode::computeTemporaryTerms(const pair &derivO expr_t this2 = const_cast(this); for (auto &tt : temp_terms_map) - if (auto it = find_if(tt.second.cbegin(), tt.second.cend(), sameTefTermPredicate()); - it != tt.second.cend()) + if (find_if(tt.second.cbegin(), tt.second.cend(), sameTefTermPredicate()) != tt.second.cend()) { tt.second.insert(this2); return; @@ -6988,8 +6985,7 @@ AbstractExternalFunctionNode::computeBlockTemporaryTerms(int blk, int eq, vector expr_t this2 = const_cast(this); for (auto &btt : blocks_temporary_terms) for (auto &tt : btt) - if (auto it = find_if(tt.cbegin(), tt.cend(), sameTefTermPredicate()); - it != tt.cend()) + if (find_if(tt.cbegin(), tt.cend(), sameTefTermPredicate()) != tt.cend()) { tt.insert(this2); return; diff --git a/src/ModFile.cc b/src/ModFile.cc index decf7921..e1c01111 100644 --- a/src/ModFile.cc +++ b/src/ModFile.cc @@ -941,7 +941,7 @@ ModFile::writeMOutput(const string &basename, bool clear_all, bool clear_global, mOutputFile << "'', '" << parallel_local_file << "';" << endl; else mOutputFile << "'" << parallel_local_file.substr(0, j+1) << "', '" - << parallel_local_file.substr(j+1, string::npos) << "';" << endl; + << parallel_local_file.substr(j+1) << "';" << endl; } mOutputFile << "};" << endl; } diff --git a/src/NumericalInitialization.cc b/src/NumericalInitialization.cc index 201b9168..c7c97416 100644 --- a/src/NumericalInitialization.cc +++ b/src/NumericalInitialization.cc @@ -120,9 +120,7 @@ InitOrEndValStatement::getUninitializedVariables(SymbolType type) } for (auto [symb_id, value] : init_values) - if (auto sit = unused.find(symb_id); - sit != unused.end()) - unused.erase(sit); + unused.erase(symb_id); return unused; } @@ -385,13 +383,8 @@ HistValStatement::checkPass(ModFileStructure &mod_file_struct, WarningConsolidat for (const auto &[key, value] : hist_values) { 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(symb_id); - sit != unused_exo.end()) - unused_exo.erase(sit); + unused_endo.erase(symb_id); + unused_exo.erase(symb_id); } if (unused_endo.size() > 0) diff --git a/src/ParsingDriver.cc b/src/ParsingDriver.cc index aa1696a3..0f0181e2 100644 --- a/src/ParsingDriver.cc +++ b/src/ParsingDriver.cc @@ -1364,7 +1364,7 @@ ParsingDriver::add_to_row_const(const string &v) expr_t id; if (v.at(0) == '-') - id = data_tree->AddUMinus(data_tree->AddNonNegativeConstant(v.substr(1, string::npos))); + id = data_tree->AddUMinus(data_tree->AddNonNegativeConstant(v.substr(1))); else id = data_tree->AddNonNegativeConstant(v); @@ -2420,20 +2420,14 @@ ParsingDriver::ms_variance_decomposition() void ParsingDriver::svar() { - auto it0 = options_list.string_options.find("ms.coefficients"), - it1 = options_list.string_options.find("ms.variances"), - it2 = options_list.string_options.find("ms.constants"); - if (it0 == options_list.string_options.end() - && it1 == options_list.string_options.end() - && it2 == options_list.string_options.end()) + bool has_coefficients = options_list.string_options.find("ms.coefficients") != options_list.string_options.end(), + has_variances = options_list.string_options.find("ms.variances") != options_list.string_options.end(), + has_constants = options_list.string_options.find("ms.constants") != options_list.string_options.end(); + if (!has_coefficients && !has_variances && !has_constants) error("You must pass one of 'coefficients', 'variances', or 'constants'."); - if ((it0 != options_list.string_options.end() - && it1 != options_list.string_options.end()) - || (it1 != options_list.string_options.end() - && it2 != options_list.string_options.end()) - || (it0 != options_list.string_options.end() - && it2 != options_list.string_options.end())) + if ((has_coefficients && has_variances) || (has_variances && has_constants) + || (has_coefficients && has_constants)) error("You may only pass one of 'coefficients', 'variances', or 'constants'."); if (auto itn = options_list.num_options.find("ms.chain"); @@ -2467,8 +2461,7 @@ ParsingDriver::markov_switching() else if (stoi(it0->second) <= 0) error("The value passed to the number_of_regimes option must be greater than zero."); - it0 = options_list.num_options.find("ms.duration"); - if (it0 == options_list.num_options.end()) + if (options_list.num_options.find("ms.duration") == options_list.num_options.end()) error("A duration option must be passed to the markov_switching statement."); mod_file->addStatement(make_unique(options_list)); diff --git a/src/SymbolTable.cc b/src/SymbolTable.cc index c78d0099..c1050843 100644 --- a/src/SymbolTable.cc +++ b/src/SymbolTable.cc @@ -198,11 +198,7 @@ SymbolTable::getPartitionsForType(SymbolType st) const noexcept(false) for (const auto &it : partition_value_map) if (getType(it.first) == st) for (const auto &it1 : it.second) - { - if (partitions.find(it1.first) == partitions.end()) - partitions[it1.first] = {}; - partitions[it1.first][it.first] = it1.second; - } + partitions[it1.first][it.first] = it1.second; return partitions; } @@ -801,13 +797,13 @@ bool SymbolTable::isPredetermined(int symb_id) const noexcept(false) { validateSymbID(symb_id); - return (predetermined_variables.find(symb_id) != predetermined_variables.end()); + return predetermined_variables.find(symb_id) != predetermined_variables.end(); } int SymbolTable::predeterminedNbr() const { - return (predetermined_variables.size()); + return predetermined_variables.size(); } void