μHAL (v2.8.17)
Part of the IPbus software repository
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
Public Member Functions | Private Attributes | List of all members
ref< T > Class Template Reference

Reference counting helper. More...

#include </builds/ipbus/ipbus-software/uhal/python/pybind11-python2/tests/object.h>

Public Member Functions

 ref ()
 Create a nullptr reference. More...
 
 ref (T *ptr)
 Construct a reference from a pointer. More...
 
 ref (const ref &r)
 Copy constructor. More...
 
 ref (ref &&r) noexcept
 Move constructor. More...
 
 ~ref ()
 Destroy this reference. More...
 
refoperator= (ref &&r) noexcept
 Move another reference into the current one. More...
 
refoperator= (const ref &r)
 Overwrite this reference with another reference. More...
 
refoperator= (T *ptr)
 Overwrite this reference with a pointer to another object. More...
 
bool operator== (const ref &r) const
 Compare this reference with another reference. More...
 
bool operator!= (const ref &r) const
 Compare this reference with another reference. More...
 
bool operator== (const T *ptr) const
 Compare this reference with a pointer. More...
 
bool operator!= (const T *ptr) const
 Compare this reference with a pointer. More...
 
T * operator-> ()
 Access the object referenced by this reference. More...
 
const T * operator-> () const
 Access the object referenced by this reference. More...
 
T & operator* ()
 Return a C++ reference to the referenced object. More...
 
const T & operator* () const
 Return a const C++ reference to the referenced object. More...
 
 operator T* ()
 Return a pointer to the referenced object. More...
 
T * get_ptr ()
 Return a const pointer to the referenced object. More...
 
const T * get_ptr () const
 Return a pointer to the referenced object. More...
 
 ref ()
 Create a nullptr reference. More...
 
 ref (T *ptr)
 Construct a reference from a pointer. More...
 
 ref (const ref &r)
 Copy constructor. More...
 
 ref (ref &&r) noexcept
 Move constructor. More...
 
 ~ref ()
 Destroy this reference. More...
 
refoperator= (ref &&r) noexcept
 Move another reference into the current one. More...
 
refoperator= (const ref &r)
 Overwrite this reference with another reference. More...
 
refoperator= (T *ptr)
 Overwrite this reference with a pointer to another object. More...
 
bool operator== (const ref &r) const
 Compare this reference with another reference. More...
 
bool operator!= (const ref &r) const
 Compare this reference with another reference. More...
 
bool operator== (const T *ptr) const
 Compare this reference with a pointer. More...
 
bool operator!= (const T *ptr) const
 Compare this reference with a pointer. More...
 
T * operator-> ()
 Access the object referenced by this reference. More...
 
const T * operator-> () const
 Access the object referenced by this reference. More...
 
T & operator* ()
 Return a C++ reference to the referenced object. More...
 
const T & operator* () const
 Return a const C++ reference to the referenced object. More...
 
 operator T* ()
 Return a pointer to the referenced object. More...
 
T * get_ptr ()
 Return a const pointer to the referenced object. More...
 
const T * get_ptr () const
 Return a pointer to the referenced object. More...
 

Private Attributes

T * m_ptr
 

Detailed Description

template<typename T>
class ref< T >

Reference counting helper.

The ref refeference template is a simple wrapper to store a pointer to an object. It takes care of increasing and decreasing the reference count of the object. When the last reference goes out of scope, the associated object will be deallocated.

Definition at line 67 of file object.h.

Constructor & Destructor Documentation

◆ ref() [1/8]

template<typename T >
ref< T >::ref ( )
inline

Create a nullptr reference.

Definition at line 70 of file object.h.

References print_default_created(), and track_default_created().

◆ ref() [2/8]

template<typename T >
ref< T >::ref ( T *  ptr)
inlineexplicit

Construct a reference from a pointer.

Definition at line 76 of file object.h.

References ref< T >::m_ptr, print_created(), and track_created().

◆ ref() [3/8]

template<typename T >
ref< T >::ref ( const ref< T > &  r)
inline

Copy constructor.

Definition at line 86 of file object.h.

References ref< T >::m_ptr, print_copy_created(), and track_copy_created().

◆ ref() [4/8]

template<typename T >
ref< T >::ref ( ref< T > &&  r)
inlinenoexcept

Move constructor.

Definition at line 96 of file object.h.

References ref< T >::m_ptr, print_move_created(), and track_move_created().

◆ ~ref() [1/2]

template<typename T >
ref< T >::~ref ( )
inline

Destroy this reference.

Definition at line 104 of file object.h.

References ref< T >::m_ptr, print_destroyed(), and track_destroyed().

◆ ref() [5/8]

template<typename T >
ref< T >::ref ( )
inline

Create a nullptr reference.

Definition at line 70 of file object.h.

References print_default_created(), and track_default_created().

◆ ref() [6/8]

template<typename T >
ref< T >::ref ( T *  ptr)
inlineexplicit

Construct a reference from a pointer.

Definition at line 76 of file object.h.

References ref< T >::m_ptr, print_created(), and track_created().

◆ ref() [7/8]

template<typename T >
ref< T >::ref ( const ref< T > &  r)
inline

Copy constructor.

Definition at line 86 of file object.h.

References ref< T >::m_ptr, print_copy_created(), and track_copy_created().

◆ ref() [8/8]

template<typename T >
ref< T >::ref ( ref< T > &&  r)
inlinenoexcept

Move constructor.

Definition at line 96 of file object.h.

References ref< T >::m_ptr, print_move_created(), and track_move_created().

◆ ~ref() [2/2]

template<typename T >
ref< T >::~ref ( )
inline

Destroy this reference.

Definition at line 104 of file object.h.

References ref< T >::m_ptr, print_destroyed(), and track_destroyed().

Member Function Documentation

◆ get_ptr() [1/4]

template<typename T >
T * ref< T >::get_ptr ( )
inline

Return a const pointer to the referenced object.

Definition at line 196 of file object.h.

References ref< T >::m_ptr.

Referenced by pybind11::detail::holder_helper< ref< T > >::get(), and PYBIND11_NAMESPACE::detail::holder_helper< ref< T > >::get().

◆ get_ptr() [2/4]

template<typename T >
T * ref< T >::get_ptr ( )
inline

Return a const pointer to the referenced object.

Definition at line 196 of file object.h.

References ref< T >::m_ptr.

◆ get_ptr() [3/4]

template<typename T >
const T * ref< T >::get_ptr ( ) const
inline

Return a pointer to the referenced object.

Definition at line 199 of file object.h.

References ref< T >::m_ptr.

◆ get_ptr() [4/4]

template<typename T >
const T * ref< T >::get_ptr ( ) const
inline

Return a pointer to the referenced object.

Definition at line 199 of file object.h.

References ref< T >::m_ptr.

◆ operator T*() [1/2]

template<typename T >
ref< T >::operator T* ( )
inlineexplicit

Return a pointer to the referenced object.

Definition at line 193 of file object.h.

References ref< T >::m_ptr.

◆ operator T*() [2/2]

template<typename T >
ref< T >::operator T* ( )
inlineexplicit

Return a pointer to the referenced object.

Definition at line 193 of file object.h.

References ref< T >::m_ptr.

◆ operator!=() [1/4]

template<typename T >
bool ref< T >::operator!= ( const ref< T > &  r) const
inline

Compare this reference with another reference.

Definition at line 172 of file object.h.

References ref< T >::m_ptr.

◆ operator!=() [2/4]

template<typename T >
bool ref< T >::operator!= ( const ref< T > &  r) const
inline

Compare this reference with another reference.

Definition at line 172 of file object.h.

References ref< T >::m_ptr.

◆ operator!=() [3/4]

template<typename T >
bool ref< T >::operator!= ( const T *  ptr) const
inline

Compare this reference with a pointer.

Definition at line 178 of file object.h.

References ref< T >::m_ptr.

◆ operator!=() [4/4]

template<typename T >
bool ref< T >::operator!= ( const T *  ptr) const
inline

Compare this reference with a pointer.

Definition at line 178 of file object.h.

References ref< T >::m_ptr.

◆ operator*() [1/4]

template<typename T >
T & ref< T >::operator* ( )
inline

Return a C++ reference to the referenced object.

Definition at line 187 of file object.h.

References ref< T >::m_ptr.

◆ operator*() [2/4]

template<typename T >
T & ref< T >::operator* ( )
inline

Return a C++ reference to the referenced object.

Definition at line 187 of file object.h.

References ref< T >::m_ptr.

◆ operator*() [3/4]

template<typename T >
const T & ref< T >::operator* ( ) const
inline

Return a const C++ reference to the referenced object.

Definition at line 190 of file object.h.

References ref< T >::m_ptr.

◆ operator*() [4/4]

template<typename T >
const T & ref< T >::operator* ( ) const
inline

Return a const C++ reference to the referenced object.

Definition at line 190 of file object.h.

References ref< T >::m_ptr.

◆ operator->() [1/4]

template<typename T >
T * ref< T >::operator-> ( )
inline

Access the object referenced by this reference.

Definition at line 181 of file object.h.

References ref< T >::m_ptr.

◆ operator->() [2/4]

template<typename T >
T * ref< T >::operator-> ( )
inline

Access the object referenced by this reference.

Definition at line 181 of file object.h.

References ref< T >::m_ptr.

◆ operator->() [3/4]

template<typename T >
const T * ref< T >::operator-> ( ) const
inline

Access the object referenced by this reference.

Definition at line 184 of file object.h.

References ref< T >::m_ptr.

◆ operator->() [4/4]

template<typename T >
const T * ref< T >::operator-> ( ) const
inline

Access the object referenced by this reference.

Definition at line 184 of file object.h.

References ref< T >::m_ptr.

◆ operator=() [1/6]

template<typename T >
ref & ref< T >::operator= ( const ref< T > &  r)
inline

Overwrite this reference with another reference.

Definition at line 130 of file object.h.

References ref< T >::m_ptr, print_copy_assigned(), and track_copy_assigned().

◆ operator=() [2/6]

template<typename T >
ref & ref< T >::operator= ( const ref< T > &  r)
inline

Overwrite this reference with another reference.

Definition at line 130 of file object.h.

References ref< T >::m_ptr, print_copy_assigned(), and track_copy_assigned().

◆ operator=() [3/6]

template<typename T >
ref & ref< T >::operator= ( ref< T > &&  r)
inlinenoexcept

Move another reference into the current one.

Definition at line 114 of file object.h.

References ref< T >::m_ptr, print_move_assigned(), and track_move_assigned().

◆ operator=() [4/6]

template<typename T >
ref & ref< T >::operator= ( ref< T > &&  r)
inlinenoexcept

Move another reference into the current one.

Definition at line 114 of file object.h.

References ref< T >::m_ptr, print_move_assigned(), and track_move_assigned().

◆ operator=() [5/6]

template<typename T >
ref & ref< T >::operator= ( T *  ptr)
inline

Overwrite this reference with a pointer to another object.

Definition at line 151 of file object.h.

References ref< T >::m_ptr, print_values(), and track_values().

◆ operator=() [6/6]

template<typename T >
ref & ref< T >::operator= ( T *  ptr)
inline

Overwrite this reference with a pointer to another object.

Definition at line 151 of file object.h.

References ref< T >::m_ptr, print_values(), and track_values().

◆ operator==() [1/4]

template<typename T >
bool ref< T >::operator== ( const ref< T > &  r) const
inline

Compare this reference with another reference.

Definition at line 169 of file object.h.

References ref< T >::m_ptr.

◆ operator==() [2/4]

template<typename T >
bool ref< T >::operator== ( const ref< T > &  r) const
inline

Compare this reference with another reference.

Definition at line 169 of file object.h.

References ref< T >::m_ptr.

◆ operator==() [3/4]

template<typename T >
bool ref< T >::operator== ( const T *  ptr) const
inline

Compare this reference with a pointer.

Definition at line 175 of file object.h.

References ref< T >::m_ptr.

◆ operator==() [4/4]

template<typename T >
bool ref< T >::operator== ( const T *  ptr) const
inline

Compare this reference with a pointer.

Definition at line 175 of file object.h.

References ref< T >::m_ptr.

Member Data Documentation

◆ m_ptr

template<typename T >
T * ref< T >::m_ptr
private

The documentation for this class was generated from the following files: