![]() |
ATLAS Offline Software
|
Simple smart pointer for Gaudi-style refcounted objects. More...
#include <RefCountedPtr.h>
Public Types | |
| using | element_type = T |
Public Member Functions | |
| RefCountedPtr ()=default | |
| Default constructor. More... | |
| RefCountedPtr (T *p) | |
| Constructor from pointer. Adds to the refcount. More... | |
| template<CxxUtils::detail::RefCounted OTHER> | |
| requires std::convertible_to< OTHER *, T * > | RefCountedPtr (std::unique_ptr< OTHER > &&other) |
| Constructor from unique_ptr. Adds to the refcount. More... | |
| RefCountedPtr (const RefCountedPtr &other) | |
| Copy constructor. More... | |
| RefCountedPtr (RefCountedPtr &&other) | |
| Move constructor. More... | |
| template<CxxUtils::detail::RefCounted OTHER> | |
| requires std::convertible_to< OTHER *, T * > | RefCountedPtr (const RefCountedPtr< OTHER > &other) |
| Constructor from another RefCountedPtr, with a different type. More... | |
| template<CxxUtils::detail::RefCounted OTHER> | |
| requires std::convertible_to< OTHER *, T * > | RefCountedPtr (RefCountedPtr< OTHER > &&other) |
| Move from another RefCountedPtr, with a different type. More... | |
| RefCountedPtr & | operator= (const RefCountedPtr &other) |
| Assignment. More... | |
| RefCountedPtr & | operator= (RefCountedPtr &&other) |
| Move. More... | |
| RefCountedPtr & | operator= (T *p) |
| Assignment from pointer. More... | |
| template<CxxUtils::detail::RefCounted OTHER> | |
| requires std::convertible_to< OTHER *, T * > RefCountedPtr & | operator= (const RefCountedPtr< OTHER > &other) |
| Assignment from different type. More... | |
| template<CxxUtils::detail::RefCounted OTHER> | |
| requires std::convertible_to< OTHER *, T * > RefCountedPtr & | operator= (RefCountedPtr< OTHER > &&other) |
| Move from different type. More... | |
| ~RefCountedPtr () | |
| Destructor. More... | |
| void | reset (T *ptr=nullptr) |
| Change the pointer. More... | |
| bool | isValid () const |
| Check if the pointer is valid. More... | |
| operator bool () const | |
| Check if the pointer is valid. More... | |
| bool | operator! () const |
| Check if the pointer is invalid. More... | |
| T * | get () |
| Get the pointer. More... | |
| const T * | get () const |
| operator T* () | |
| Convert to pointer. More... | |
| operator const T * () const | |
| T * | operator-> () |
| Dereference. More... | |
| const T * | operator-> () const |
| T & | operator* () |
| Dereference. More... | |
| const T & | operator* () const |
Private Member Functions | |
| T * | release () |
Private Attributes | |
| T * | m_ptr = nullptr |
| Pointer. More... | |
Friends | |
| template<CxxUtils::detail::RefCounted OTHER> | |
| class | RefCountedPtr |
Simple smart pointer for Gaudi-style refcounted objects.
Smart pointer maintaining reference counts on an object. The type T must have addRef and release methods.
This is basically the Gaudi SmartIF class with the IInterface dependency removed.
Further note: accessors are not const, and copy/assignment methods take non-const objects. This is to avoid warnings from the thread-safety checker.
Definition at line 38 of file RefCountedPtr.h.
| using CxxUtils::RefCountedPtr< T >::element_type = T |
Definition at line 41 of file RefCountedPtr.h.
|
default |
Default constructor.
| CxxUtils::RefCountedPtr< T >::RefCountedPtr | ( | T * | p | ) |
Constructor from pointer. Adds to the refcount.
| requires std::convertible_to<OTHER*, T*> CxxUtils::RefCountedPtr< T >::RefCountedPtr | ( | std::unique_ptr< OTHER > && | other | ) |
Constructor from unique_ptr. Adds to the refcount.
| CxxUtils::RefCountedPtr< T >::RefCountedPtr | ( | const RefCountedPtr< T > & | other | ) |
Copy constructor.
| CxxUtils::RefCountedPtr< T >::RefCountedPtr | ( | RefCountedPtr< T > && | other | ) |
Move constructor.
| requires std::convertible_to<OTHER*, T*> CxxUtils::RefCountedPtr< T >::RefCountedPtr | ( | const RefCountedPtr< OTHER > & | other | ) |
Constructor from another RefCountedPtr, with a different type.
| requires std::convertible_to<OTHER*, T*> CxxUtils::RefCountedPtr< T >::RefCountedPtr | ( | RefCountedPtr< OTHER > && | other | ) |
Move from another RefCountedPtr, with a different type.
| CxxUtils::RefCountedPtr< T >::~RefCountedPtr | ( | ) |
Destructor.
| T* CxxUtils::RefCountedPtr< T >::get | ( | ) |
Get the pointer.
| const T* CxxUtils::RefCountedPtr< T >::get | ( | ) | const |
| bool CxxUtils::RefCountedPtr< T >::isValid | ( | ) | const |
Check if the pointer is valid.
|
explicit |
Check if the pointer is valid.
| CxxUtils::RefCountedPtr< T >::operator const T * | ( | ) | const |
| CxxUtils::RefCountedPtr< T >::operator T* | ( | ) |
Convert to pointer.
| bool CxxUtils::RefCountedPtr< T >::operator! | ( | ) | const |
Check if the pointer is invalid.
| T& CxxUtils::RefCountedPtr< T >::operator* | ( | ) |
Dereference.
| const T& CxxUtils::RefCountedPtr< T >::operator* | ( | ) | const |
| T* CxxUtils::RefCountedPtr< T >::operator-> | ( | ) |
Dereference.
| const T* CxxUtils::RefCountedPtr< T >::operator-> | ( | ) | const |
| RefCountedPtr& CxxUtils::RefCountedPtr< T >::operator= | ( | const RefCountedPtr< T > & | other | ) |
Assignment.
| requires std::convertible_to<OTHER*, T*> RefCountedPtr& CxxUtils::RefCountedPtr< T >::operator= | ( | const RefCountedPtr< OTHER > & | other | ) |
Assignment from different type.
| RefCountedPtr& CxxUtils::RefCountedPtr< T >::operator= | ( | RefCountedPtr< T > && | other | ) |
Move.
| requires std::convertible_to<OTHER*, T*> RefCountedPtr& CxxUtils::RefCountedPtr< T >::operator= | ( | RefCountedPtr< OTHER > && | other | ) |
Move from different type.
| RefCountedPtr& CxxUtils::RefCountedPtr< T >::operator= | ( | T * | p | ) |
Assignment from pointer.
|
private |
| void CxxUtils::RefCountedPtr< T >::reset | ( | T * | ptr = nullptr | ) |
Change the pointer.
|
friend |
Definition at line 122 of file RefCountedPtr.h.
|
private |
Pointer.
Definition at line 128 of file RefCountedPtr.h.
1.8.18