ms-dsge: add param initialization to C output

time-shift
Houtan Bastani 2011-12-25 19:03:26 +01:00 committed by Michel Juillard
parent b426f7236c
commit 0c5966d487
5 changed files with 26 additions and 0 deletions

View File

@ -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); 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 << "}" << endl;
mDriverCFile.close(); mDriverCFile.close();

View File

@ -50,6 +50,16 @@ InitParamStatement::writeOutput(ostream &output, const string &basename) const
output << symbol_table.getName(symb_id) << " = M_.params( " << id << " );\n"; 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 void
InitParamStatement::fillEvalContext(eval_context_t &eval_context) const InitParamStatement::fillEvalContext(eval_context_t &eval_context) const
{ {

View File

@ -41,6 +41,7 @@ public:
const SymbolTable &symbol_table_arg); const SymbolTable &symbol_table_arg);
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) const; virtual void writeOutput(ostream &output, const string &basename) const;
virtual void writeCOutput(ostream &output, const string &basename);
//! Fill eval context with parameter value //! Fill eval context with parameter value
void fillEvalContext(eval_context_t &eval_context) const; void fillEvalContext(eval_context_t &eval_context) const;
}; };

View File

@ -63,6 +63,11 @@ Statement::checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &wa
{ {
} }
void
Statement::writeCOutput(ostream &output, const string &basename)
{
}
void void
Statement::computingPass() Statement::computingPass()
{ {

View File

@ -138,6 +138,7 @@ public:
\param basename is the name of the modfile (without extension) which can be used to build auxiliary files \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 writeOutput(ostream &output, const string &basename) const = 0;
virtual void writeCOutput(ostream &output, const string &basename);
}; };
class NativeStatement : public Statement class NativeStatement : public Statement