bug fix: check that osr, osr_params and optim_weights appear together

issue#70
Houtan Bastani 2011-03-03 16:30:53 +01:00
parent d430ea8e43
commit f8a717b496
5 changed files with 28 additions and 0 deletions

View File

@ -629,6 +629,12 @@ OsrParamsStatement::OsrParamsStatement(const SymbolList &symbol_list_arg) :
{
}
void
OsrParamsStatement::checkPass(ModFileStructure &mod_file_struct)
{
mod_file_struct.osr_params_present = true;
}
void
OsrParamsStatement::writeOutput(ostream &output, const string &basename) const
{
@ -681,6 +687,12 @@ OptimWeightsStatement::OptimWeightsStatement(const var_weights_t &var_weights_ar
{
}
void
OptimWeightsStatement::checkPass(ModFileStructure &mod_file_struct)
{
mod_file_struct.optim_weights_present = true;
}
void
OptimWeightsStatement::writeOutput(ostream &output, const string &basename) const
{

View File

@ -185,6 +185,7 @@ private:
const SymbolList symbol_list;
public:
OsrParamsStatement(const SymbolList &symbol_list_arg);
virtual void checkPass(ModFileStructure &mod_file_struct);
virtual void writeOutput(ostream &output, const string &basename) const;
};
@ -308,6 +309,7 @@ public:
OptimWeightsStatement(const var_weights_t &var_weights_arg,
const covar_weights_t &covar_weights_arg,
const SymbolTable &symbol_table_arg);
virtual void checkPass(ModFileStructure &mod_file_struct);
virtual void writeOutput(ostream &output, const string &basename) const;
};

View File

@ -130,6 +130,14 @@ ModFile::checkPass()
exit(EXIT_FAILURE);
}
if ((mod_file_struct.osr_present && (!mod_file_struct.osr_params_present || !mod_file_struct.optim_weights_present))
|| ((!mod_file_struct.osr_present || !mod_file_struct.osr_params_present) && mod_file_struct.optim_weights_present)
|| ((!mod_file_struct.osr_present || !mod_file_struct.optim_weights_present) && mod_file_struct.osr_params_present))
{
cerr << "ERROR: The osr statement must be used with osr_params and optim_weights." << endl;
exit(EXIT_FAILURE);
}
if (mod_file_struct.simul_present && stochastic_statement_present)
{
cerr << "ERROR: A .mod file cannot contain both a simul command and one of {stoch_simul, estimation, osr, ramsey_policy}" << endl;

View File

@ -26,6 +26,8 @@ ModFileStructure::ModFileStructure() :
stoch_simul_present(false),
estimation_present(false),
osr_present(false),
osr_params_present(false),
optim_weights_present(false),
ramsey_policy_present(false),
planner_objective_present(false),
order_option(0),

View File

@ -44,6 +44,10 @@ public:
bool estimation_present;
//! Whether an osr statement is present
bool osr_present;
//! Whether an osr params statement is present
bool osr_params_present;
//! Whether an optim weight statement is present
bool optim_weights_present;
//! Whether a ramsey_policy statement is present
bool ramsey_policy_present;
//! Whether a planner_objective statement is present