simplify var_model statement calls

issue#70
Houtan Bastani 2018-04-17 10:58:25 +02:00
parent 09e73f3bb4
commit bb1cc0bebf
3 changed files with 19 additions and 28 deletions

View File

@ -378,23 +378,21 @@ VarModelStatement::VarModelStatement(const SymbolList &symbol_list_arg,
} }
void void
VarModelStatement::getVarModelInfoForVarExpectation(map<string, pair<SymbolList, int> > &var_model_info) const VarModelStatement::getVarModelInfo(string &var_model_name,
map<string, pair<SymbolList, int> > &var_model_info,
map<string, vector<string> > &var_model_eqtags) const
{ {
var_model_name = name;
if (symbol_list.empty()) if (symbol_list.empty())
return; {
OptionsList::vec_str_options_t::const_iterator it = options_list.vector_str_options.find("var.eqtags");
OptionsList::num_options_t::const_iterator it = options_list.num_options.find("var.order"); var_model_eqtags[name] = it->second;
var_model_info[name] = make_pair(symbol_list, atoi(it->second.c_str())); }
} else
{
void OptionsList::num_options_t::const_iterator it = options_list.num_options.find("var.order");
VarModelStatement::getVarModelEqTags(map<string, vector<string> > &var_model_eqtags) const var_model_info[name] = make_pair(symbol_list, atoi(it->second.c_str()));
{ }
if (!symbol_list.empty())
return;
OptionsList::vec_str_options_t::const_iterator it = options_list.vector_str_options.find("var.eqtags");
var_model_eqtags[name] = it->second;
} }
void void
@ -414,12 +412,6 @@ VarModelStatement::fillVarModelInfoFromEquations(vector<int> &eqnumber_arg, vect
max_lag = max_lag_arg; max_lag = max_lag_arg;
} }
void
VarModelStatement::getVarModelName(string &var_model_name) const
{
var_model_name = name;
}
void void
VarModelStatement::checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings) VarModelStatement::checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings)
{ {

View File

@ -159,14 +159,14 @@ public:
const OptionsList &options_list_arg, const OptionsList &options_list_arg,
const string &name_arg, const string &name_arg,
const SymbolTable &symbol_table_arg); const SymbolTable &symbol_table_arg);
void getVarModelInfoForVarExpectation(map<string, pair<SymbolList, int> > &var_model_info) const; void getVarModelInfo(string &var_model_name,
void getVarModelEqTags(map<string, vector<string> > &var_model_eqtags) const; map<string, pair<SymbolList, int> > &var_model_info,
map<string, vector<string> > &var_model_eqtags) const;
void fillVarModelInfoFromEquations(vector<int> &eqnumber_arg, vector<int> &lhs_arg, void fillVarModelInfoFromEquations(vector<int> &eqnumber_arg, vector<int> &lhs_arg,
vector<set<pair<int, int> > > &rhs_arg, vector<set<pair<int, int> > > &rhs_arg,
vector<bool> &nonstationary_arg, vector<bool> &nonstationary_arg,
vector<bool> &diff_arg, vector<int> &orig_diff_var_arg, vector<bool> &diff_arg, vector<int> &orig_diff_var_arg,
int max_lag_arg); int max_lag_arg);
void getVarModelName(string &var_model_name) const;
virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings); virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const; virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
void createVarModelMFunction(ostream &output, const map<string, set<int> > &var_expectation_functions_to_write) const; void createVarModelMFunction(ostream &output, const map<string, set<int> > &var_expectation_functions_to_write) const;

View File

@ -373,7 +373,8 @@ ModFile::transformPass(bool nostrict, bool stochastic, bool compute_xrefs, const
// Var Model // Var Model
map<string, pair<SymbolList, int> > var_model_info_var_expectation; map<string, pair<SymbolList, int> > var_model_info_var_expectation;
map<string, vector<string> > var_model_eq_tags; map<string, vector<string> > var_model_eq_tags;
map<string, pair<pair<vector<int>, pair<vector<bool>, vector<int> > >, pair<pair<int, vector<bool> >, vector<int> > > > var_model_info_pac_expectation; map<string, pair<pair<vector<int>, pair<vector<bool>, vector<int> > >, pair<pair<int, vector<bool> >, vector<int> > > >
var_model_info_pac_expectation;
for (vector<Statement *>::const_iterator it = statements.begin(); for (vector<Statement *>::const_iterator it = statements.begin();
it != statements.end(); it++) it != statements.end(); it++)
{ {
@ -381,9 +382,7 @@ ModFile::transformPass(bool nostrict, bool stochastic, bool compute_xrefs, const
if (vms != NULL) if (vms != NULL)
{ {
string var_model_name; string var_model_name;
vms->getVarModelName(var_model_name); vms->getVarModelInfoForVarExpectation(var_model_name, var_model_info_var_expectation, var_model_eq_tags);
vms->getVarModelEqTags(var_model_eq_tags);
vms->getVarModelInfoForVarExpectation(var_model_info_var_expectation);
vector<int> eqnumber, lhs, orig_diff_var; vector<int> eqnumber, lhs, orig_diff_var;
vector<set<pair<int, int> > > rhs; vector<set<pair<int, int> > > rhs;
vector<bool> nonstationary, diff; vector<bool> nonstationary, diff;