SmartPtr< T, OwnershipPolicy, DestroyPolicy > Class Template Reference

#include <Pt/SmartPtr.h>

Policy based smart pointer. More...

Inherits ExternalRefCounted< T >, and DeletePolicy< T >.

Public Member Functions

 SmartPtr ()
 Default Constructor. More...
 
 SmartPtr (T *ptr)
 Constructs from a pointer to manage.
 
 SmartPtr (const SmartPtr &ptr)
 Copy constructor.
 
 ~SmartPtr ()
 Destructor.
 
SmartPtroperator= (const SmartPtr &ptr)
 Assign from another SmartPtr.
 
T * operator-> () const
 Access value.
 
T & operator* () const
 Access value.
 
bool operator! () const
 Returns true if the raw pointer is null.
 
 operator bool () const
 Returns true if the raw pointer is not null.
 
T * get ()
 Get non-owning pointer.
 
const T * get () const
 Get non-owning pointer.
 
int refs () const
 Returns the refcount.
 

Protected Member Functions

bool unlink (T *object)
 unlink a smart pointer from a managed object
 
void link (const ExternalRefCounted &ptr, T *object)
 link a smart pointer to a managed object
 

Related Functions

template<typename T , class O , typename D , typename T2 , typename O2 , typename D2 >
bool operator== (const SmartPtr< T, O, D > &a, const SmartPtr< T2, O2, D2 > &b)
 Equality comparison operator.
 
template<typename T , typename O , typename D , typename T2 >
bool operator== (const SmartPtr< T, O, D > &a, const T2 *b)
 Equality comparison operator.
 
template<typename T , typename O , typename D , typename T2 , typename O2 , typename D2 >
bool operator!= (const SmartPtr< T, O, D > &a, const SmartPtr< T2, O2, D2 > &b)
 Equality comparison operator.
 
template<typename T , typename O , typename D , typename T2 >
bool operator!= (const SmartPtr< T, O, D > &a, const T2 *b)
 Equality comparison operator.
 
template<typename T , typename O , typename D , typename T2 , typename O2 , typename D2 >
bool operator< (const SmartPtr< T, O, D > &a, const SmartPtr< T2, O2, D2 > &b)
 Less-than comparison operator.
 
template<typename T , typename O , typename D , typename T2 >
bool operator< (const SmartPtr< T, O, D > &a, const T2 *b)
 Less-than comparison operator.
 
template<typename T , typename M , typename D >
void fixup (const Pt::FixupInfo &fixup, SmartPtr< T, M, D > &fixme)
 Custom fixup for deserialization.
 
template<typename T , typename M , typename D >
void load (const LoadInfo &li, SmartPtr< T, M, D > &sp)
 Custom loading for deserialization.
 
template<typename T , typename M >
void operator>>= (const Pt::SerializationInfo &si, SmartPtr< T, M > &sp)
 Deserialize a smart pointer.
 
template<typename T , typename M , typename D >
void save (Pt::SaveInfo &si, const SmartPtr< T, M, D > &sp)
 Custom saving for serialization.
 
template<typename T , typename M , typename D >
void operator<<= (Pt::SerializationInfo &si, const SmartPtr< T, M, D > &sp)
 Serialize a smart pointer.
 

Detailed Description

template<typename T, typename OwnershipPolicy = ExternalRefCounted<T>, typename DestroyPolicy = DeletePolicy<T>>
class Pt::SmartPtr< T, OwnershipPolicy, DestroyPolicy >

The SmartPtr implements a OwnershipPolicy that determines how the contained raw pointer is managed. The default is reference counting, which uses a non-intrusive reference counting mechanism. A OwnershipPolicy needs to implement two functions called link() and unlink() to manage a raw pointer. The DestroyPolicy implements the method for destroying the object once the smart pointer detects, that the object needs to be freed. By default the object is destroyed by deleting it, but this can be overridden by using a different DestroyPolicy. The DestroyPolicy needs to implement a method destroy(T*), which releases the underlying pointer.

Parameters
TContained type.
OwnershipPolicyManages ownership.
DestroyPolicyDestroys the object.

Constructor & Destructor Documentation

◆ SmartPtr()

SmartPtr ( )

The contained pointer is set to null in the default constructor.