diff --git a/src/DynamicModel.cc b/src/DynamicModel.cc index f4bddc546cb1c50e2e9e0c583531450f2e8dd37f..da33a68b9f6df1e6df6e6d83849c9cb6003d84de 100644 --- a/src/DynamicModel.cc +++ b/src/DynamicModel.cc @@ -24,6 +24,7 @@ #include <algorithm> #include <numeric> #include <regex> +#include <sstream> #include "DynamicModel.hh" @@ -4595,17 +4596,9 @@ DynamicModel::writeSetAuxiliaryVariables(const string &basename, bool julia) con return; string func_name = julia ? basename + "_dynamic_set_auxiliary_series" : "dynamic_set_auxiliary_series"; - string filename = julia ? func_name + ".jl" : packageDir(basename) + "/" + func_name + ".m"; string comment = julia ? "#" : "%"; - ofstream output; - output.open(filename, ios::out | ios::binary); - if (!output.is_open()) - { - cerr << "ERROR: Can't open file " << filename << " for writing" << endl; - exit(EXIT_FAILURE); - } - + stringstream output; output << "function ds = " << func_name + "(ds, params)" << endl << comment << endl << comment << " Status : Computes Auxiliary variables of the dynamic model and returns a dseries" << endl @@ -4614,7 +4607,7 @@ DynamicModel::writeSetAuxiliaryVariables(const string &basename, bool julia) con << comment << " from model file (.mod)" << endl << endl << output_func_body.str(); - output.close(); + writeToFileIfModified(output, julia ? func_name + ".jl" : packageDir(basename) + "/" + func_name + ".m"); } void diff --git a/src/ModelEquationBlock.cc b/src/ModelEquationBlock.cc index 96d09c644c2aa8682d6a8979f9f9076698f6e72d..69531800c1e3da41f6dbcb0c5fde4057c94602ff 100644 --- a/src/ModelEquationBlock.cc +++ b/src/ModelEquationBlock.cc @@ -19,6 +19,7 @@ #include <cassert> #include <algorithm> +#include <sstream> #include "ModelEquationBlock.hh" @@ -190,17 +191,9 @@ SteadyStateModel::writeSteadyStateFile(const string &basename, bool ramsey_model if (def_table.size() == 0) return; - string filename = julia ? basename + "SteadyState2.jl" : packageDir(basename) + "/steadystate.m"; - ofstream output; - output.open(filename, ios::out | ios::binary); - if (!output.is_open()) - { - cerr << "ERROR: Can't open file " << filename << " for writing" << endl; - exit(EXIT_FAILURE); - } - ExprNodeOutputType output_type = (julia ? ExprNodeOutputType::juliaSteadyStateFile : ExprNodeOutputType::steadyStateFile); + stringstream output; if (!julia) output << "function [ys_, params, info] = steadystate(" << "ys_, exo_, params)" << endl @@ -243,7 +236,8 @@ SteadyStateModel::writeSteadyStateFile(const string &basename, bool ramsey_model output << "end" << endl; if (julia) output << "end" << endl; - output.close(); + + writeToFileIfModified(output, julia ? basename + "SteadyState2.jl" : packageDir(basename) + "/steadystate.m"); } void diff --git a/src/StaticModel.cc b/src/StaticModel.cc index a3ae89c59bb467b9c0790a859464083d0cba424f..eafb81f893ce75c4ff7eabe8b1320133b0babf46 100644 --- a/src/StaticModel.cc +++ b/src/StaticModel.cc @@ -22,6 +22,7 @@ #include <cstdlib> #include <cassert> #include <algorithm> +#include <sstream> #include "StaticModel.hh" #include "DynamicModel.hh" @@ -2115,17 +2116,9 @@ StaticModel::writeSetAuxiliaryVariables(const string &basename, bool julia) cons return; string func_name = julia ? basename + "_set_auxiliary_variables" : "set_auxiliary_variables"; - string filename = julia ? func_name + ".jl" : packageDir(basename) + "/" + func_name + ".m"; string comment = julia ? "#" : "%"; - ofstream output; - output.open(filename, ios::out | ios::binary); - if (!output.is_open()) - { - cerr << "ERROR: Can't open file " << filename << " for writing" << endl; - exit(EXIT_FAILURE); - } - + stringstream output; output << "function "; if (!julia) output << "y = "; @@ -2142,7 +2135,7 @@ StaticModel::writeSetAuxiliaryVariables(const string &basename, bool julia) cons if (julia) output << "end" << endl; - output.close(); + writeToFileIfModified(output, julia ? func_name + ".jl" : packageDir(basename) + "/" + func_name + ".m"); } void