From 9e6f62d9887232a05b60dd7587b4d408b9ac954e Mon Sep 17 00:00:00 2001 From: Houtan Bastani <houtan@dynare.org> Date: Mon, 31 Aug 2015 14:15:29 +0200 Subject: [PATCH] preprocessor: fix build on wheezy due to bug introduced in f143b54142ae1c1f27a22842c3d994323e59f16d --- DynareMain.cc | 23 ++++++----------------- DynareMain1.cc | 46 ++++++++++++++++++++++++++++++++++++++++++++++ Makefile.am | 1 + 3 files changed, 53 insertions(+), 17 deletions(-) create mode 100644 DynareMain1.cc diff --git a/DynareMain.cc b/DynareMain.cc index e1804b33..e78fe4f4 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 00000000..3cbd33f3 --- /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 77f87922..40083fdc 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 \ -- GitLab