diff --git a/DynareMain.cc b/DynareMain.cc index e1804b334a802382af66f015186ec93105475e4f..e78fe4f490c963299f2d862b629c21ba0e0f9358 100644 --- a/DynareMain.cc +++ b/DynareMain.cc @@ -26,9 +26,9 @@ #ifndef PACKAGE_VERSION # define PACKAGE_VERSION 4. #endif -#include "macro/MacroDriver.hh" #include <unistd.h> +#include "ParsingDriver.hh" #include "ExtendedPreprocessorTypes.hh" #include "ConfigFile.hh" @@ -46,6 +46,10 @@ void main2(stringstream &in, string &basename, bool debug, bool clear_all, bool #endif ); +void main1(char *modfile, string &basename, bool debug, bool save_macro, string &save_macro_file, + bool no_line_macro, + map<string, string> &defines, vector<string> &path, stringstream ¯o_output); + void usage() { @@ -296,23 +300,8 @@ main(int argc, char **argv) path.push_back(*it); // Do macro processing - MacroDriver m; - stringstream macro_output; - m.parse(argv[1], macro_output, debug, no_line_macro, defines, path); - if (save_macro) - { - if (save_macro_file.empty()) - save_macro_file = basename + "-macroexp.mod"; - ofstream macro_output_file(save_macro_file.c_str()); - if (macro_output_file.fail()) - { - cerr << "Cannot open " << save_macro_file << " for macro output" << endl; - exit(EXIT_FAILURE); - } - macro_output_file << macro_output.str(); - macro_output_file.close(); - } + main1(argv[1], basename, debug, save_macro, save_macro_file, no_line_macro, defines, path, macro_output); if (only_macro) return EXIT_SUCCESS; diff --git a/DynareMain1.cc b/DynareMain1.cc new file mode 100644 index 0000000000000000000000000000000000000000..3cbd33f376d735449120a3c48db10db2a3a7e42c --- /dev/null +++ b/DynareMain1.cc @@ -0,0 +1,46 @@ +/* + * Copyright (C) 2015 Dynare Team + * + * This file is part of Dynare. + * + * Dynare is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Dynare is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Dynare. If not, see <http://www.gnu.org/licenses/>. + */ + +#include <sstream> +#include <fstream> + +#include "macro/MacroDriver.hh" + +void +main1(char *modfile, string &basename, bool debug, bool save_macro, string &save_macro_file, bool no_line_macro, + map<string, string> &defines, vector<string> &path, stringstream ¯o_output) +{ + // Do macro processing + MacroDriver m; + + m.parse(modfile, macro_output, debug, no_line_macro, defines, path); + if (save_macro) + { + if (save_macro_file.empty()) + save_macro_file = basename + "-macroexp.mod"; + ofstream macro_output_file(save_macro_file.c_str()); + if (macro_output_file.fail()) + { + cerr << "Cannot open " << save_macro_file << " for macro output" << endl; + exit(EXIT_FAILURE); + } + macro_output_file << macro_output.str(); + macro_output_file.close(); + } +} diff --git a/Makefile.am b/Makefile.am index 77f87922fdc142cfc2030ef8d5457d9a6c97e61c..40083fdcccd6c2d128f423b51bcd6ff5bcba1e45 100644 --- a/Makefile.am +++ b/Makefile.am @@ -45,6 +45,7 @@ dynare_m_SOURCES = \ MinimumFeedbackSet.cc \ MinimumFeedbackSet.hh \ DynareMain.cc \ + DynareMain1.cc \ DynareMain2.cc \ CodeInterpreter.hh \ ExternalFunctionsTable.cc \