#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 uint32_t      Toperation_t;
//typedef uint32_t      Tdestination1_t;
//typedef uint32_t      Tdestination2_t;
//typedef uint32_t      Texec_flag_t;
//typedef bool          Texec_excep_t;
//typedef uint32_t      Tcondition_t;
//typedef uint32_t      Tbranch_state_t;

  typedef uint32_t      Texception_t;
  typedef uint32_t      Tcontext_t;
  typedef uint32_t      Tpacket_t;
  typedef uint32_t      Ttype_t;

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

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

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

#endif
