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; }
96template <
typename T>
inline std::ostream& operator<<(std::ostream& os, tlm_payload_shared_ptr<T>
const& p) {
102 return x.get() == y.get();
108 return x.get() != y.get();
T & operator*() const noexcept
Dereference the stored pointer.
tlm_payload_shared_ptr & operator=(T *p) noexcept
raw pointer assignment operator.
tlm_payload_shared_ptr & operator=(tlm_payload_shared_ptr const &p) noexcept
Copy assignment operator.
~tlm_payload_shared_ptr()
destructor
tlm_payload_shared_ptr(tlm_payload_shared_ptr const &p) noexcept
Copy constructor.
tlm_payload_shared_ptr() noexcept=default
Default constructor, creates a unique_ptr that owns nothing.
T * operator->() const noexcept
Return the stored pointer.
T * get() const noexcept
Return the stored pointer.
tlm_payload_shared_ptr & operator=(tlm_payload_shared_ptr &&p) noexcept
Move assignment operator.
tlm_payload_shared_ptr(tlm_payload_shared_ptr &&p) noexcept
Move constructor.ยด