MADNESS  version 0.9
Public Member Functions | Static Public Member Functions | List of all members
madness::DeferredDeleter< ptrT, deleterT > Class Template Reference

Deferred deleter for smart pointers. More...

#include <deferred_cleanup.h>

Public Member Functions

 DeferredDeleter (World &w, deleterT d=default_deleter< deleterT >())
 Constructs a deferred deleter object. More...
 
 DeferredDeleter (const DeferredDeleter< ptrT, deleterT > &other)
 Copy constructor. More...
 
DeferredDeleter< ptrT, deleterT > & operator= (const DeferredDeleter< ptrT, deleterT > &other)
 Copy assignment operator. More...
 
void operator() (ptrT *p) const
 The deferred deletion function. More...
 

Static Public Member Functions

template<typename D >
static enable_if< std::is_same
< D, void(*)(ptrT *)>, D >
::type 
default_deleter ()
 Construct a default deleter for a function pointer. More...
 
template<typename D >
static disable_if
< std::is_same< D, void(*)(ptrT *)>
, D >::type 
default_deleter ()
 Construct a default deleter for a functor. More...
 

Detailed Description

template<typename ptrT, typename deleterT = void(*)(ptrT*)>
class madness::DeferredDeleter< ptrT, deleterT >

Deferred deleter for smart pointers.

This deleter object places the shared pointer on the deferred deletion list of a world when the last reference to the pointer is destroyed. Once the pointer is placed in the deferred deletion list, it is destroyed by the world object at the next global fence of that world. You may pass any arbitrary deleter function pointer/functor to to the DeferredDeleter constructor to handle cleanup. If no deleter function pointer/functor is provided by the user, the pointer will be freed with the delete operator.

Template Parameters
ptrTThe pointer type that will be deleted
deleterTThe deleter function pointer/functor type that will be use to cleanup the pointer [Default = void(*)(ptrT*) ].
Note
D type must be void(*)(T*) for function pointers or a functor type that includes a void D::operator() (ptrT*) function and have an accessible copy constructor and assignment operator.

Constructor & Destructor Documentation

template<typename ptrT , typename deleterT = void(*)(ptrT*)>
madness::DeferredDeleter< ptrT, deleterT >::DeferredDeleter ( World w,
deleterT  d = default_deleter<deleterT>() 
)
inline

Constructs a deferred deleter object.

The deleter function pointer d will be used to delete the pointer at a global fence of world w.

Parameters
wA reference to the world object, which will be responsible for pointer deletion.
dA deleter function pointer/functor [Default = if D == void(*)(ptrT*) then d = &detail::checked_delete<ptrT> else d = D() ].
template<typename ptrT , typename deleterT = void(*)(ptrT*)>
madness::DeferredDeleter< ptrT, deleterT >::DeferredDeleter ( const DeferredDeleter< ptrT, deleterT > &  other)
inline

Copy constructor.

Parameters
otherThe deleter object to be copied.

Member Function Documentation

template<typename ptrT , typename deleterT = void(*)(ptrT*)>
template<typename D >
static enable_if<std::is_same<D, void(*)(ptrT*)>, D>::type madness::DeferredDeleter< ptrT, deleterT >::default_deleter ( )
inlinestatic

Construct a default deleter for a function pointer.

template<typename ptrT , typename deleterT = void(*)(ptrT*)>
template<typename D >
static disable_if<std::is_same<D, void(*)(ptrT*)>, D>::type madness::DeferredDeleter< ptrT, deleterT >::default_deleter ( )
inlinestatic

Construct a default deleter for a functor.

template<typename ptrT , typename deleterT = void(*)(ptrT*)>
void madness::DeferredDeleter< ptrT, deleterT >::operator() ( ptrT *  p) const
inline

The deferred deletion function.

This function is called when the last reference to the shared pointer is destroyed. It will place the pointer in the deferred cleanup list of world.

References madness::detail::DeferredCleanup::add().

template<typename ptrT , typename deleterT = void(*)(ptrT*)>
DeferredDeleter<ptrT, deleterT>& madness::DeferredDeleter< ptrT, deleterT >::operator= ( const DeferredDeleter< ptrT, deleterT > &  other)
inline

Copy assignment operator.

Parameters
otherThe deleter object to be copied.
Returns
A reference to this object.

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