diff --git a/ModFile.cc b/ModFile.cc index 8044fa1b193bfcad27a6da02b0e9a24ec9c6cdcc..71c539bdf5b208df9acc9d0d4f686f86fbd4254e 100644 --- a/ModFile.cc +++ b/ModFile.cc @@ -86,6 +86,12 @@ ModFile::addStatement(Statement *st) statements.push_back(st); } +void +ModFile::addStatementAtFront(Statement *st) +{ + statements.insert(statements.begin(), st); +} + void ModFile::checkPass() { @@ -226,9 +232,9 @@ ModFile::transformPass() { int sid = symbol_table.addSymbol("dsge_prior_weight", eParameter); if (!mod_file_struct.dsge_var_calibrated.empty()) - addStatement(new InitParamStatement(sid, - expressions_tree.AddNumConstant(mod_file_struct.dsge_var_calibrated), - symbol_table)); + addStatementAtFront(new InitParamStatement(sid, + expressions_tree.AddNumConstant(mod_file_struct.dsge_var_calibrated), + symbol_table)); } catch (SymbolTable::AlreadyDeclaredException &e) { diff --git a/ModFile.hh b/ModFile.hh index bfa12f9db34155cf946d2b4702eae8ff802375cb..f35957a957e2677653253ff69d1e39389539d4dd 100644 --- a/ModFile.hh +++ b/ModFile.hh @@ -82,6 +82,8 @@ private: public: //! Add a statement void addStatement(Statement *st); + //! Add a statement at the front of the statements vector + void addStatementAtFront(Statement *st); //! Evaluate all the statements /*! \param warn_uninit Should a warning be displayed for uninitialized endogenous/exogenous/parameters ? */ void evalAllExpressions(bool warn_uninit);