thepeg is hosted by Hepforge, IPPP Durham
ThePEG 2.3.0
ThePEG::Pointer::RCPtr< T > Class Template Reference

RCPtr is a reference counted (smart) pointer. More...

#include <RCPtr.h>

Inheritance diagram for ThePEG::Pointer::RCPtr< T >:

Public Types

typedef void iterator_category
 Template argument typedef.
 
typedef void difference_type
 Template argument typedef.
 
typedef T * pointer
 Template argument typedef.
 
typedef const T * const_pointer
 Template argument typedef.
 
typedef T & reference
 Template argument typedef.
 
typedef const T & const_reference
 Template argument typedef.
 
typedef T value_type
 Template argument typedef.
 

Public Member Functions

 RCPtr ()
 
 
 RCPtr (decltype(nullptr))
 Constructor for nullptr.
 
 RCPtr (const RCPtr &p)
 Copy constructor.
 
template<typename UPtr >
 RCPtr (const UPtr &u)
 Copy constructor for class UPtr which has operator-> defined resulting in a value implicitly convertible to T *.
 
 RCPtr (pointer p)
 Construction from real pointer.
 
 ~RCPtr ()
 Destructor.
 
RCPtrcreate ()
 Allocate and construct an object of class T and point to it, possibly deleting the object pointed to before.
 
RCPtrcreate (const_reference t)
 Allocate and copy-construct an object of class T and point to it, possibly deleting the object pointed to before.
 
RCPtroperator= (const RCPtr &p)
 Assignment.
 
template<typename UPtr >
RCPtroperator= (const UPtr &u)
 Assignment from class UPtr which has operator-> defined resulting in a value implicitly convertible to T *.
 
template<typename UPtr >
RCPtrassignDynamic (const UPtr &u)
 Assignment from class UPtr which has operator-> defined resulting in a value which can be cast dynamically to T *.
 
template<typename UPtr >
RCPtrassignConst (const UPtr &u)
 Assignment from class UPtr which has operator-> defined resulting in a value which can be const_cast'ed to T *.
 
void swap (RCPtr &p)
 Make p point to the object pointed to by this and vice versa.
 
bool operator== (const RCPtr &p) const
 Test for equality of the underlying pointers.
 
bool operator!= (const RCPtr &p) const
 Test for inequality of the underlying pointers.
 
bool operator== (const_pointer p) const
 Test for equality of the underlying pointers.
 
bool operator!= (const_pointer p) const
 Test for inequality of the underlying pointers.
 
template<typename UPtr >
bool operator== (const UPtr &u) const
 Test for equality of the underlying pointers.
 
template<typename UPtr >
bool operator!= (const UPtr &u) const
 Test for inequality of the underlying pointers.
 
bool operator< (const RCPtr &p) const
 Test for ordering.
 
bool operator< (const_pointer p) const
 Test for ordering.
 
bool operator! () const
 Returns true if the underlying pointer is null.
 
 operator T* () const
 Returns the underlying pointer.
 
pointer operator-> () const
 Member access.
 
reference operator* () const
 Dereferencing.
 

Static Public Member Functions

static RCPtr Create ()
 Allocate and construct an object of class T and return a RCPtr to it.
 
static RCPtr Create (const_reference t)
 Allocate and copy-construct an object of class T and return a RCPtr to it.
 

Private Member Functions

void increment ()
 Increment the counter of the object pointed to.
 
void release ()
 Stop pointing to the current object and delete it if this was the last pointer to it.
 

Private Attributes

pointer ptr
 The actual pointer.
 

Additional Inherited Members

- Protected Member Functions inherited from ThePEG::Pointer::RCPtrBase
void increment (const ReferenceCounted *rcp)
 Increment the counter of a reference counted object.
 
bool release (const ReferenceCounted *rcp)
 Decrement the counter of a reference counted object.
 

Detailed Description

template<typename T>
class ThePEG::Pointer::RCPtr< T >

RCPtr is a reference counted (smart) pointer.

Objects created using the RCPtr::create() methods will continue living until no RCPtr or ConstRCPtr are pointing to it, at which point it will be deleted.

See also
ReferenceCounted

Definition at line 60 of file RCPtr.h.

Member Typedef Documentation

◆ const_pointer

template<typename T >
typedef const T* ThePEG::Pointer::RCPtr< T >::const_pointer

Template argument typedef.

Definition at line 71 of file RCPtr.h.

◆ const_reference

template<typename T >
typedef const T& ThePEG::Pointer::RCPtr< T >::const_reference

Template argument typedef.

Definition at line 75 of file RCPtr.h.

◆ difference_type

template<typename T >
typedef void ThePEG::Pointer::RCPtr< T >::difference_type

Template argument typedef.

Definition at line 67 of file RCPtr.h.

◆ iterator_category

template<typename T >
typedef void ThePEG::Pointer::RCPtr< T >::iterator_category

Template argument typedef.

Definition at line 65 of file RCPtr.h.

◆ pointer

template<typename T >
typedef T* ThePEG::Pointer::RCPtr< T >::pointer

Template argument typedef.

Definition at line 69 of file RCPtr.h.

◆ reference

template<typename T >
typedef T& ThePEG::Pointer::RCPtr< T >::reference

Template argument typedef.

Definition at line 73 of file RCPtr.h.

◆ value_type

template<typename T >
typedef T ThePEG::Pointer::RCPtr< T >::value_type

Template argument typedef.

Definition at line 77 of file RCPtr.h.

Constructor & Destructor Documentation

◆ RCPtr() [1/5]

template<typename T >
ThePEG::Pointer::RCPtr< T >::RCPtr ( )
inline

Constructor for null pointer.

Definition at line 85 of file RCPtr.h.

◆ RCPtr() [2/5]

template<typename T >
ThePEG::Pointer::RCPtr< T >::RCPtr ( decltype(nullptr)  )
inline

Constructor for nullptr.

Definition at line 90 of file RCPtr.h.

◆ RCPtr() [3/5]

template<typename T >
ThePEG::Pointer::RCPtr< T >::RCPtr ( const RCPtr< T > &  p)
inline

Copy constructor.

Definition at line 95 of file RCPtr.h.

References ThePEG::Pointer::RCPtr< T >::increment().

◆ RCPtr() [4/5]

template<typename T >
template<typename UPtr >
ThePEG::Pointer::RCPtr< T >::RCPtr ( const UPtr &  u)
inline

Copy constructor for class UPtr which has operator-> defined resulting in a value implicitly convertible to T *.

Definition at line 102 of file RCPtr.h.

References ThePEG::Pointer::RCPtr< T >::increment().

◆ RCPtr() [5/5]

template<typename T >
ThePEG::Pointer::RCPtr< T >::RCPtr ( pointer  p)
inlineexplicit

Construction from real pointer.

Definition at line 108 of file RCPtr.h.

References ThePEG::Pointer::RCPtr< T >::increment().

◆ ~RCPtr()

template<typename T >
ThePEG::Pointer::RCPtr< T >::~RCPtr ( )
inline

Destructor.

Deletes the object pointed to if this is the last pointer to it.

Definition at line 114 of file RCPtr.h.

References ThePEG::Pointer::RCPtr< T >::release().

Member Function Documentation

◆ assignConst()

template<typename T >
template<typename UPtr >
RCPtr & ThePEG::Pointer::RCPtr< T >::assignConst ( const UPtr &  u)
inline

Assignment from class UPtr which has operator-> defined resulting in a value which can be const_cast'ed to T *.

Definition at line 200 of file RCPtr.h.

References ThePEG::Pointer::RCPtr< T >::increment(), ThePEG::Pointer::RCPtr< T >::ptr, and ThePEG::Pointer::RCPtr< T >::release().

◆ assignDynamic()

template<typename T >
template<typename UPtr >
RCPtr & ThePEG::Pointer::RCPtr< T >::assignDynamic ( const UPtr &  u)
inline

Assignment from class UPtr which has operator-> defined resulting in a value which can be cast dynamically to T *.

Definition at line 186 of file RCPtr.h.

References ThePEG::Pointer::RCPtr< T >::increment(), ThePEG::Pointer::RCPtr< T >::ptr, and ThePEG::Pointer::RCPtr< T >::release().

◆ Create() [1/2]

template<typename T >
static RCPtr ThePEG::Pointer::RCPtr< T >::Create ( )
inlinestatic

Allocate and construct an object of class T and return a RCPtr to it.

Definition at line 120 of file RCPtr.h.

References ThePEG::Pointer::RCPtr< T >::create().

Referenced by ThePEG::Pointer::PtrTraits< RCPtr< T > >::create(), ThePEG::Pointer::PtrTraits< ConstRCPtr< T > >::create(), and ThePEG::ClassTraitsBase< T >::create().

◆ create() [1/2]

template<typename T >
RCPtr & ThePEG::Pointer::RCPtr< T >::create ( )
inline

Allocate and construct an object of class T and point to it, possibly deleting the object pointed to before.

Definition at line 139 of file RCPtr.h.

References ThePEG::Pointer::RCPtr< T >::ptr, and ThePEG::Pointer::RCPtr< T >::release().

Referenced by ThePEG::Pointer::RCPtr< T >::Create().

◆ Create() [2/2]

template<typename T >
static RCPtr ThePEG::Pointer::RCPtr< T >::Create ( const_reference  t)
inlinestatic

Allocate and copy-construct an object of class T and return a RCPtr to it.

Definition at line 129 of file RCPtr.h.

References ThePEG::Pointer::RCPtr< T >::create().

◆ create() [2/2]

template<typename T >
RCPtr & ThePEG::Pointer::RCPtr< T >::create ( const_reference  t)
inline

Allocate and copy-construct an object of class T and point to it, possibly deleting the object pointed to before.

Definition at line 150 of file RCPtr.h.

References ThePEG::Pointer::RCPtr< T >::ptr, and ThePEG::Pointer::RCPtr< T >::release().

◆ increment()

template<typename T >
void ThePEG::Pointer::RCPtr< T >::increment ( )
inlineprivate

◆ operator T*()

template<typename T >
ThePEG::Pointer::RCPtr< T >::operator T* ( ) const
inline

Returns the underlying pointer.

Definition at line 279 of file RCPtr.h.

References ThePEG::Pointer::RCPtr< T >::ptr.

◆ operator!()

template<typename T >
bool ThePEG::Pointer::RCPtr< T >::operator! ( ) const
inline

Returns true if the underlying pointer is null.

Definition at line 274 of file RCPtr.h.

References ThePEG::Pointer::RCPtr< T >::ptr.

◆ operator!=() [1/3]

template<typename T >
bool ThePEG::Pointer::RCPtr< T >::operator!= ( const RCPtr< T > &  p) const
inline

Test for inequality of the underlying pointers.

Definition at line 227 of file RCPtr.h.

References ThePEG::Pointer::RCPtr< T >::ptr.

◆ operator!=() [2/3]

template<typename T >
template<typename UPtr >
bool ThePEG::Pointer::RCPtr< T >::operator!= ( const UPtr &  u) const
inline

Test for inequality of the underlying pointers.

Definition at line 251 of file RCPtr.h.

References ThePEG::Pointer::RCPtr< T >::ptr.

◆ operator!=() [3/3]

template<typename T >
bool ThePEG::Pointer::RCPtr< T >::operator!= ( const_pointer  p) const
inline

Test for inequality of the underlying pointers.

Definition at line 237 of file RCPtr.h.

References ThePEG::Pointer::RCPtr< T >::ptr.

◆ operator*()

template<typename T >
reference ThePEG::Pointer::RCPtr< T >::operator* ( ) const
inline

Dereferencing.

Definition at line 289 of file RCPtr.h.

References ThePEG::Pointer::RCPtr< T >::ptr.

◆ operator->()

template<typename T >
pointer ThePEG::Pointer::RCPtr< T >::operator-> ( ) const
inline

Member access.

Definition at line 284 of file RCPtr.h.

References ThePEG::Pointer::RCPtr< T >::ptr.

◆ operator<() [1/2]

template<typename T >
bool ThePEG::Pointer::RCPtr< T >::operator< ( const RCPtr< T > &  p) const
inline

Test for ordering.

Definition at line 258 of file RCPtr.h.

References ThePEG::Pointer::RCPtr< T >::ptr.

◆ operator<() [2/2]

template<typename T >
bool ThePEG::Pointer::RCPtr< T >::operator< ( const_pointer  p) const
inline

Test for ordering.

Definition at line 266 of file RCPtr.h.

References ThePEG::Pointer::RCPtr< T >::ptr.

◆ operator=() [1/2]

template<typename T >
RCPtr & ThePEG::Pointer::RCPtr< T >::operator= ( const RCPtr< T > &  p)
inline

◆ operator=() [2/2]

template<typename T >
template<typename UPtr >
RCPtr & ThePEG::Pointer::RCPtr< T >::operator= ( const UPtr &  u)
inline

Assignment from class UPtr which has operator-> defined resulting in a value implicitly convertible to T *.

Definition at line 173 of file RCPtr.h.

References ThePEG::Pointer::RCPtr< T >::increment(), ThePEG::Pointer::RCPtr< T >::ptr, and ThePEG::Pointer::RCPtr< T >::release().

◆ operator==() [1/3]

template<typename T >
bool ThePEG::Pointer::RCPtr< T >::operator== ( const RCPtr< T > &  p) const
inline

Test for equality of the underlying pointers.

Definition at line 222 of file RCPtr.h.

References ThePEG::Pointer::RCPtr< T >::ptr.

◆ operator==() [2/3]

template<typename T >
template<typename UPtr >
bool ThePEG::Pointer::RCPtr< T >::operator== ( const UPtr &  u) const
inline

Test for equality of the underlying pointers.

Definition at line 243 of file RCPtr.h.

References ThePEG::Pointer::RCPtr< T >::ptr.

◆ operator==() [3/3]

template<typename T >
bool ThePEG::Pointer::RCPtr< T >::operator== ( const_pointer  p) const
inline

Test for equality of the underlying pointers.

Definition at line 232 of file RCPtr.h.

References ThePEG::Pointer::RCPtr< T >::ptr.

◆ release()

template<typename T >
void ThePEG::Pointer::RCPtr< T >::release ( )
inlineprivate

◆ swap()

template<typename T >
void ThePEG::Pointer::RCPtr< T >::swap ( RCPtr< T > &  p)
inline

Make p point to the object pointed to by this and vice versa.


Definition at line 212 of file RCPtr.h.

References ThePEG::Pointer::RCPtr< T >::ptr.

Referenced by std::swap().

Member Data Documentation

◆ ptr


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