#ifndef morpheo_behavioural_constant_Constant_h

/*
 * $Id$
 *
 * [ Description ]
 * 
 */

using namespace std;

namespace morpheo {
namespace behavioural {
namespace constant {

  //------------------------------------------------------[ Control ]-----
  typedef bool    Tcontrol_t;

  //----------------------------------------------------[ Condition ]-----
  typedef uint8_t Tcondition_t;
    
  const Tcondition_t    cst_CONDITION_NONE            = 0x0;           // None condition (jump)
  const Tcondition_t    cst_CONDITION_F               = 0x2;           // Branch if Flag is set
  const Tcondition_t    cst_CONDITION_NF              = 0x3;           // Branch if Flag is clear
  const Tcondition_t    cst_CONDITION_REG             = 0x4;           // Branch if a register is read
  const Tcondition_t    cst_CONDITION_STACK           = 0x8;           // Branch with pop  in stack pointer

  //-------------------------------------------------[ branch_state ]-----
  typedef uint8_t Tbranch_state_t;

  const Tbranch_state_t cst_BRANCH_STATE_NONE         = 0x0;           // 0 0
  const Tbranch_state_t cst_BRANCH_STATE_NSPEC_TAKE   = 0x1;           // 0 1  -> incondionnal
  const Tbranch_state_t cst_BRANCH_STATE_SPEC_NTAKE   = 0x2;           // 1 0
  const Tbranch_state_t cst_BRANCH_STATE_SPEC_TAKE    = 0x3;           // 1 1


}; // end namespace constant
}; // end namespace behavioural
}; // end namespace morpheo              

#endif
