#ifndef morpheo_behavioural_Types_h
#define morpheo_behavioural_Types_h

#include "Common/include/Types.h"
#include "Behavioural/include/Constants.h"

namespace morpheo {
namespace behavioural {
  
  //============================================
  // Type definition
  //============================================

  // ***** general
  typedef bool          Tcontrol_t;
  typedef uint8_t       Toperation_t;
//typedef uint8_t       Tdestination1_t;
//typedef uint8_t       Tdestination2_t;
//typedef uint8_t       Texec_flag_t;
//typedef bool          Texec_excep_t;
//typedef uint8_t       Tcondition_t;
//typedef uint8_t       Tbranch_state_t;

  typedef uint8_t       Texception_t;
  typedef uint8_t       Tcontext_t;
  typedef uint8_t       Tpacket_t;
  typedef uint8_t       Ttype_t;

  // ***** Register
  typedef uint8_t       Tgeneral_address_t;
  typedef uint32_t      Tgeneral_data_t;
  typedef uint8_t       Tspecial_address_t;
  typedef uint32_t      Tspecial_data_t;

  // ***** component dependant
  // ~~~~~ load store queue
  typedef uint8_t       Taccess_t;
  typedef uint8_t       Tlsq_ptr_t;
  typedef uint32_t      Tdcache_address_t;
  typedef uint32_t      Tdcache_data_t;
  typedef bool          Tdcache_error_t;
  typedef uint8_t       Tdcache_type_t;

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

#endif
