diff options
Diffstat (limited to 'src/systemc/ext/tlm_core/tlm_1/tlm_req_rsp/tlm_1_interfaces/tlm_core_ifs.h')
-rw-r--r-- | src/systemc/ext/tlm_core/tlm_1/tlm_req_rsp/tlm_1_interfaces/tlm_core_ifs.h | 169 |
1 files changed, 79 insertions, 90 deletions
diff --git a/src/systemc/ext/tlm_core/tlm_1/tlm_req_rsp/tlm_1_interfaces/tlm_core_ifs.h b/src/systemc/ext/tlm_core/tlm_1/tlm_req_rsp/tlm_1_interfaces/tlm_core_ifs.h index 4c1340338..2cd919bd2 100644 --- a/src/systemc/ext/tlm_core/tlm_1/tlm_req_rsp/tlm_1_interfaces/tlm_core_ifs.h +++ b/src/systemc/ext/tlm_core/tlm_1/tlm_req_rsp/tlm_1_interfaces/tlm_core_ifs.h @@ -17,133 +17,122 @@ *****************************************************************************/ -// -// Note to the LRM writer : This is the core of the TLM standard -// - - -#ifndef __TLM_CORE_IFS_H__ -#define __TLM_CORE_IFS_H__ - -//#include <systemc> +#ifndef \ + __SYSTEMC_EXT_TLM_CORE_TLM_1_TLM_REQ_RSP_TLM1_INTERFACES_TLM_CORE_IFS_H__ +#define \ + __SYSTEMC_EXT_TLM_CORE_TLM_1_TLM_REQ_RSP_TLM1_INTERFACES_TLM_CORE_IFS_H__ #include "tlm_core/tlm_1/tlm_req_rsp/tlm_1_interfaces/tlm_tag.h" -namespace tlm { - -// bidirectional blocking interfaces +namespace tlm +{ -template < typename REQ , typename RSP > +// Bidirectional blocking interfaces. +template <typename REQ, typename RSP> class tlm_transport_if : public virtual sc_core::sc_interface { -public: - virtual RSP transport( const REQ & ) = 0; - - virtual void transport( const REQ &req , RSP &rsp ) { - rsp = transport( req ); - } - + public: + virtual RSP transport(const REQ &) = 0; + + virtual void + transport(const REQ &req, RSP &rsp) + { + rsp = transport(req); + } }; - -// uni-directional blocking interfaces - -template < typename T > +// Uni-directional blocking interfaces. +template <typename T> class tlm_blocking_get_if : public virtual sc_core::sc_interface { -public: - virtual T get( tlm_tag<T> *t = 0 ) = 0; - virtual void get( T &t ) { t = get(); } - + public: + virtual T get(tlm_tag<T> *t=nullptr) = 0; + virtual void get(T &t) { t = get(); } }; -template < typename T > +template <typename T> class tlm_blocking_put_if : public virtual sc_core::sc_interface { -public: - virtual void put( const T &t ) = 0; + public: + virtual void put(const T &t) = 0; }; -// uni-directional non blocking interfaces +// Uni-directional non blocking interfaces. -template < typename T > +template <typename T> class tlm_nonblocking_get_if : public virtual sc_core::sc_interface { -public: - virtual bool nb_get( T &t ) = 0; - virtual bool nb_can_get( tlm_tag<T> *t = 0 ) const = 0; - virtual const sc_core::sc_event &ok_to_get( tlm_tag<T> *t = 0 ) const = 0; + public: + virtual bool nb_get(T &t) = 0; + virtual bool nb_can_get(tlm_tag<T> *t=nullptr) const = 0; + virtual const sc_core::sc_event & + ok_to_get(tlm_tag<T> *t=nullptr) const = 0; }; -template < typename T > +template <typename T> class tlm_nonblocking_put_if : public virtual sc_core::sc_interface { -public: - virtual bool nb_put( const T &t ) = 0; - virtual bool nb_can_put( tlm_tag<T> *t = 0 ) const = 0; - virtual const sc_core::sc_event &ok_to_put( tlm_tag<T> *t = 0 ) const = 0; + public: + virtual bool nb_put(const T &t) = 0; + virtual bool nb_can_put(tlm_tag<T> *t=nullptr) const = 0; + virtual const sc_core::sc_event & + ok_to_put(tlm_tag<T> *t=nullptr) const = 0; }; +// Combined uni-directional blocking and non blocking. +template <typename T> +class tlm_get_if : public virtual tlm_blocking_get_if<T>, + public virtual tlm_nonblocking_get_if<T> +{}; -// combined uni-directional blocking and non blocking +template <typename T> +class tlm_put_if : public virtual tlm_blocking_put_if<T>, + public virtual tlm_nonblocking_put_if<T> +{}; -template < typename T > -class tlm_get_if : - public virtual tlm_blocking_get_if< T > , - public virtual tlm_nonblocking_get_if< T > {}; - -template < typename T > -class tlm_put_if : - public virtual tlm_blocking_put_if< T > , - public virtual tlm_nonblocking_put_if< T > {}; - - -// peek interfaces - -template < typename T > +// Peek interfaces. +template <typename T> class tlm_blocking_peek_if : public virtual sc_core::sc_interface { -public: - virtual T peek( tlm_tag<T> *t = 0 ) const = 0; - virtual void peek( T &t ) const { t = peek(); } - + public: + virtual T peek(tlm_tag<T> *t=nullptr) const = 0; + virtual void peek(T &t) const { t = peek(); } }; -template < typename T > +template <typename T> class tlm_nonblocking_peek_if : public virtual sc_core::sc_interface { -public: - virtual bool nb_peek( T &t ) const = 0; - virtual bool nb_can_peek( tlm_tag<T> *t = 0 ) const = 0; - virtual const sc_core::sc_event &ok_to_peek( tlm_tag<T> *t = 0 ) const = 0; + public: + virtual bool nb_peek(T &t) const = 0; + virtual bool nb_can_peek(tlm_tag<T> *t=nullptr) const = 0; + virtual const sc_core::sc_event & + ok_to_peek(tlm_tag<T> *t=nullptr) const = 0; }; -template < typename T > +template <typename T> class tlm_peek_if : - public virtual tlm_blocking_peek_if< T > , - public virtual tlm_nonblocking_peek_if< T > {}; - -// get_peek interfaces - -template < typename T > -class tlm_blocking_get_peek_if : - public virtual tlm_blocking_get_if<T> , - public virtual tlm_blocking_peek_if<T> {}; - -template < typename T > -class tlm_nonblocking_get_peek_if : - public virtual tlm_nonblocking_get_if<T> , - public virtual tlm_nonblocking_peek_if<T> {}; - - -template < typename T > -class tlm_get_peek_if : - public virtual tlm_get_if<T> , - public virtual tlm_peek_if<T> , - public virtual tlm_blocking_get_peek_if<T> , - public virtual tlm_nonblocking_get_peek_if<T> - {}; + public virtual tlm_blocking_peek_if<T>, + public virtual tlm_nonblocking_peek_if<T> +{}; + +// Get_peek interfaces. +template <typename T> +class tlm_blocking_get_peek_if : public virtual tlm_blocking_get_if<T>, + public virtual tlm_blocking_peek_if<T> +{}; + +template <typename T> +class tlm_nonblocking_get_peek_if : public virtual tlm_nonblocking_get_if<T>, + public virtual tlm_nonblocking_peek_if<T> +{}; + +template <typename T> +class tlm_get_peek_if : public virtual tlm_get_if<T>, + public virtual tlm_peek_if<T>, public virtual tlm_blocking_get_peek_if<T>, + public virtual tlm_nonblocking_get_peek_if<T> +{}; } // namespace tlm #endif +/* __SYSTEMC_EXT_TLM_CORE_TLM_1_TLM_REQ_RSP_TLM1_INTERFACES_TLM_CORE_IFS_H__ */ |