17 #ifndef _SYSC_TLM_TLM_GP_SHARED_H_
18 #define _SYSC_TLM_TLM_GP_SHARED_H_
37 if(ptr && ptr->has_mm())
43 if(ptr && ptr->has_mm())
48 : ptr(std::move(p.ptr)) {
53 if(ptr && ptr->has_mm())
58 if(ptr && ptr->has_mm())
61 if(ptr && ptr->has_mm())
67 if(ptr && ptr->has_mm())
76 if(ptr && ptr->has_mm())
79 if(ptr && ptr->has_mm())
85 inline T&
operator*() const noexcept {
return *ptr; }
91 inline T*
get() const noexcept {
return ptr; }
93 inline operator bool() const noexcept {
return ptr !=
nullptr; }
96 template <
typename T>
inline std::ostream& operator<<(std::ostream& os, tlm_payload_shared_ptr<T>
const& p) {
101 template <
typename T>
inline bool operator==(tlm_payload_shared_ptr<T>
const& x, tlm_payload_shared_ptr<T>
const& y) noexcept {
102 return x.get() == y.get();
105 template <
typename T>
inline bool operator==(tlm_payload_shared_ptr<T>
const& x, T* y) noexcept {
return x.get() == y; }
107 template <
typename T>
inline bool operator!=(tlm_payload_shared_ptr<T>
const& x, tlm_payload_shared_ptr<T>
const& y) noexcept {
108 return x.get() != y.get();
111 using tlm_gp_shared_ptr = tlm_payload_shared_ptr<tlm::tlm_generic_payload>;
~tlm_payload_shared_ptr()
destructor
tlm_payload_shared_ptr(tlm_payload_shared_ptr const &p) noexcept
Copy constructor.
T * get() const noexcept
Return the stored pointer.
tlm_payload_shared_ptr() noexcept=default
Default constructor, creates a unique_ptr that owns nothing.
tlm_payload_shared_ptr & operator=(tlm_payload_shared_ptr &&p) noexcept
Move assignment operator.
T * operator->() const noexcept
Return the stored pointer.
tlm_payload_shared_ptr & operator=(tlm_payload_shared_ptr const &p) noexcept
Copy assignment operator.
tlm_payload_shared_ptr & operator=(T *p) noexcept
raw pointer assignment operator.
tlm_payload_shared_ptr(tlm_payload_shared_ptr &&p) noexcept
Move constructor.ยด
T & operator*() const noexcept
Dereference the stored pointer.