/* * Copyright (C) 2006-2008 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 . */ #ifndef _MOD_FILE_HH #define _MOD_FILE_HH using namespace std; #include #include "SymbolTable.hh" #include "NumericalConstants.hh" #include "ModelTree.hh" #include "VariableTable.hh" #include "Statement.hh" //! The abstract representation of a "mod" file class ModFile { public: ModFile(); ~ModFile(); //! Symbol table SymbolTable symbol_table; //! Numerical constants table NumericalConstants num_constants; //! Expressions outside model block DataTree expressions_tree; //! Model equations and their derivatives ModelTree model_tree; //! Option linear bool linear; //! Global evaluation context /*! Filled using initval blocks and parameters initializations */ eval_context_type global_eval_context; private: //! List of statements vector statements; //! Structure of the mod file ModFileStructure mod_file_struct; public: //! Add a statement void addStatement(Statement *st); //! Do some checking and fills mod_file_struct void checkPass(); //! Execute computations void computingPass(); //! Writes Matlab/Scilab output files /*! \param basename The base name used for writing output files. Should be the name of the mod file without its extension \param clear_all Should a "clear all" instruction be written to output ? */ void writeOutputFiles(const string &basename, bool clear_all) const; }; #endif // ! MOD_FILE_HH