diff --git a/ModFile.cc b/ModFile.cc index 7571da2ddbc91f4b6d335a115add66865d407559..a5ab0a424d436487f47ff8c6ae9d60aa80f819a2 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 4e2fc618a7f77ac397338b08a1926758f82c31c1..0d6bcecc1301bfc7daf37022fc11ec21557e65ff 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 f92144103dd7bebd55405988c4475415c171fc55..b03ab0d218def211423f868414ba9bc468daf6a8 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 f990f6110ba7ad94026e3871c9bd7c2e8d87dcfe..3ce955d66c73a9779d2e2ac6b5149c7778388042 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 40e37818dc17b05a9efe586b39c851e78423fd0a..6abda8fca7c91c1443580b7e8a3b1e5b2d515d65 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