From e1cebde83ae7c4168506ff3587b6660bad707195 Mon Sep 17 00:00:00 2001 From: Houtan Bastani <houtan.bastani@ens.fr> Date: Sun, 25 Dec 2011 19:03:26 +0100 Subject: [PATCH] ms-dsge: add param initialization to C output --- ModFile.cc | 9 +++++++++ NumericalInitialization.cc | 10 ++++++++++ NumericalInitialization.hh | 1 + Statement.cc | 5 +++++ Statement.hh | 1 + 5 files changed, 26 insertions(+) diff --git a/ModFile.cc b/ModFile.cc index 7571da2d..a5ab0a42 100644 --- a/ModFile.cc +++ b/ModFile.cc @@ -852,6 +852,15 @@ ModFile::writeCOutputFiles(const string &basename) const dynamic_model.writeCOutput(mDriverCFile, basename, false, false, true, mod_file_struct.order_option, mod_file_struct.estimation_present); + mDriverCFile << "/*" << endl + << " * Writing statements" << endl + << " */" << endl; + + // Print statements + for (vector<Statement *>::const_iterator it = statements.begin(); + it != statements.end(); it++) + (*it)->writeCOutput(mDriverCFile, basename); + mDriverCFile << "}" << endl; mDriverCFile.close(); diff --git a/NumericalInitialization.cc b/NumericalInitialization.cc index 4e2fc618..0d6bcecc 100644 --- a/NumericalInitialization.cc +++ b/NumericalInitialization.cc @@ -50,6 +50,16 @@ InitParamStatement::writeOutput(ostream &output, const string &basename) const output << symbol_table.getName(symb_id) << " = M_.params( " << id << " );\n"; } +void +InitParamStatement::writeCOutput(ostream &output, const string &basename) +{ + int id = symbol_table.getTypeSpecificID(symb_id); + output << "params[ " << id << " ] = "; + param_value->writeOutput(output); + output << ";" << endl; + output << "double " << symbol_table.getName(symb_id) << " = params[ " << id << " ];" << endl; +} + void InitParamStatement::fillEvalContext(eval_context_t &eval_context) const { diff --git a/NumericalInitialization.hh b/NumericalInitialization.hh index f9214410..b03ab0d2 100644 --- a/NumericalInitialization.hh +++ b/NumericalInitialization.hh @@ -41,6 +41,7 @@ public: const SymbolTable &symbol_table_arg); virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings); virtual void writeOutput(ostream &output, const string &basename) const; + virtual void writeCOutput(ostream &output, const string &basename); //! Fill eval context with parameter value void fillEvalContext(eval_context_t &eval_context) const; }; diff --git a/Statement.cc b/Statement.cc index f990f611..3ce955d6 100644 --- a/Statement.cc +++ b/Statement.cc @@ -63,6 +63,11 @@ Statement::checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &wa { } +void +Statement::writeCOutput(ostream &output, const string &basename) +{ +} + void Statement::computingPass() { diff --git a/Statement.hh b/Statement.hh index 40e37818..6abda8fc 100644 --- a/Statement.hh +++ b/Statement.hh @@ -138,6 +138,7 @@ public: \param basename is the name of the modfile (without extension) which can be used to build auxiliary files */ virtual void writeOutput(ostream &output, const string &basename) const = 0; + virtual void writeCOutput(ostream &output, const string &basename); }; class NativeStatement : public Statement -- GitLab