Skip to content
Snippets Groups Projects
Select Git revision
  • ff6aef0e45cdf9bd82477c3ca182d6399bbbabe0
  • master default protected
  • pac_composite_target_mce
  • ramsey_k_order
  • 4.6
  • occbin
  • uop
  • rework_pac
  • aux_vars_fix
  • created_preprocessor_repo
10 results

ExternalFunctionsTable.cc

Blame
  • Forked from Dynare / preprocessor
    Source project has a limited visibility.
    CodeInterpreter.hh 52.67 KiB
    /*
     * Copyright (C) 2007-2011 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/>.
     */
    
    #ifndef _CODEINTERPRETER_HH
    #define _CODEINTERPRETER_HH
    //#define DEBUGL
    #include <cstdlib>
    #include <cstdio>
    #include <fstream>
    #include <cstring>
    #include <vector>
    #ifdef LINBCG
    # include "linbcg.hh"
    #endif
    #ifdef BYTE_CODE
    # ifndef DEBUG_EX
    #  include "mex.h"
    # else
    #  include "mex_interface.hh"
    # endif
    #endif
    
    #include <stdint.h>
    
    #define NEAR_ZERO (1e-12)
    
    using namespace std;
    
    /**
     * \enum Tags
     * \brief The differents flags of the bytecode
     */
    enum Tags
      {
        FLDZ,         //!< Stores zero in the stack - 0 (0)
        FLDC,         //!< Stores a constant term in the stack - 1 (1)
    
        FDIMT,        //!< Defines the number of temporary terms - dynamic context (the period has to be indicated) - 2 (2)
        FDIMST,       //!< Defines the number of temporary terms - static context (the period hasn't to be indicated) - 3  (3)
        FLDT,         //!< Stores a temporary term in the stack - dynamic context (the period has to be indicated) - 4 (4)
        FLDST,        //!< Stores a temporary term in the stack - static context (the period hasn't to be indicated) - 5 (5)
        FSTPT,        //!< Loads a temporary term from the stack - dynamic context (the period has to be indicated) - 6 (6)
        FSTPST,       //!< Loads a temporary term from the stack - static context (the period hasn't to be indicated) - 7 (7)
    
        FLDU,         //!< Stores an element of the vector U in the stack - dynamic context (the period has to be indicated) - 8 (8)
        FLDSU,        //!< Stores an element of the vector U in the stack - static context (the period hasn't to be indicated) - 9 (9)
        FSTPU,        //!< Loads an element of the vector U from the stack - dynamic context (the period has to be indicated) - A (10)
        FSTPSU,       //!< Loads an element of the vector U from the stack - static context (the period hasn't to be indicated) - B (11)
    
        FLDV,         //!< Stores a variable (described in SymbolType) in the stack - dynamic context (the period has to be indicated) - C (12)
        FLDSV,        //!< Stores a variable (described in SymbolType) in the stack - static context (the period hasn't to be indicated) - D (13)
        FLDVS,        //!< Stores a variable (described in SymbolType) in the stack - dynamic context but inside the STEADYSTATE function (the period hasn't to be indicated) - E (14)
        FSTPV,        //!< Loads a variable (described in SymbolType) from the stack - dynamic context (the period has to be indicated) - F (15)
        FSTPSV,       //!< Loads a variable (described in SymbolType) from the stack - static context (the period hasn't to be indicated) - 10 (16)