ACE  6.2.1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Types | Public Member Functions | Private Attributes | List of all members
ACE_Utils::Auto_Functor< X, Functor > Class Template Reference

Helper template to implement auto_ptr<>-like classes, but executing a functor in the destructor, instead of always deleting things. More...

#include <Auto_Functor.h>

Public Types

typedef X element_type
 
typedef Functor functor_type
 

Public Member Functions

 Auto_Functor (X *p=0, Functor functor=Functor())
 Constructor. More...
 
 Auto_Functor (Auto_Functor &rhs)
 
Auto_Functor< X, Functor > & operator= (Auto_Functor &rhs)
 
template<typename Y >
 Auto_Functor (Auto_Functor< Y, Functor > &rhs)
 
template<typename Y >
Auto_Functor< X, Functor > & operator= (Auto_Functor< Y, Functor > &rhs)
 
 ~Auto_Functor ()
 
X & operator* () const
 
X * operator-> () const
 
X * get ()
 
X * release ()
 
void reset (X *p=0)
 
void reset (X *p, Functor f)
 
Functor const & functor () const
 
 Auto_Functor (Auto_Functor_Ref< X, Functor > rhs)
 
Auto_Functor< X, Functor > & operator= (Auto_Functor_Ref< X, Functor > rhs)
 
template<typename Y >
 operator Auto_Functor_Ref< Y, Functor > ()
 
template<typename Y >
 operator Auto_Functor< Y, Functor > ()
 
template<typename Y >
ACE_Utils::Auto_Functor< X,
Functor > & 
operator= (Auto_Functor< Y, Functor > &rhs)
 

Private Attributes

X * p_
 
Functor f_
 

Detailed Description

template<typename X, typename Functor>
class ACE_Utils::Auto_Functor< X, Functor >

Helper template to implement auto_ptr<>-like classes, but executing a functor in the destructor, instead of always deleting things.

The functor is called in the destructor, and it must implement:

Functor() throw();
Functor(Functor const &) throw();
Functor & operator=(Functor const &) throw();
void operator()(X * p) throw();

Member Typedef Documentation

template<typename X , typename Functor >
typedef X ACE_Utils::Auto_Functor< X, Functor >::element_type
template<typename X , typename Functor >
typedef Functor ACE_Utils::Auto_Functor< X, Functor >::functor_type

Constructor & Destructor Documentation

template<typename X , typename Functor >
ACE_Utils::Auto_Functor< X, Functor >::Auto_Functor ( X *  p = 0,
Functor  functor = Functor() 
)
inlineexplicit

Constructor.

template<typename X , typename Functor >
ACE_Utils::Auto_Functor< X, Functor >::Auto_Functor ( Auto_Functor< X, Functor > &  rhs)
inline
template<typename X , typename Functor >
template<typename Y >
ACE_Utils::Auto_Functor< X, Functor >::Auto_Functor ( Auto_Functor< Y, Functor > &  rhs)
inline
template<typename X , typename Functor >
ACE_Utils::Auto_Functor< X, Functor >::~Auto_Functor ( )
template<typename X , typename Functor >
ACE_Utils::Auto_Functor< X, Functor >::Auto_Functor ( Auto_Functor_Ref< X, Functor >  rhs)
inline

Member Function Documentation

template<typename X , typename Functor >
Functor const & ACE_Utils::Auto_Functor< X, Functor >::functor ( ) const
inline
template<typename X , typename Functor >
X * ACE_Utils::Auto_Functor< X, Functor >::get ( )
inline
template<typename X , typename Functor >
template<typename Y >
ACE_Utils::Auto_Functor< X, Functor >::operator Auto_Functor< Y, Functor > ( )
template<typename X , typename Functor >
template<typename Y >
ACE_Utils::Auto_Functor< X, Functor >::operator Auto_Functor_Ref< Y, Functor > ( )
template<typename X , typename Functor >
X & ACE_Utils::Auto_Functor< X, Functor >::operator* ( ) const
inline
template<typename X , typename Functor >
X * ACE_Utils::Auto_Functor< X, Functor >::operator-> ( ) const
inline
template<typename X , typename Functor >
template<typename Y >
ACE_Utils::Auto_Functor<X,Functor>& ACE_Utils::Auto_Functor< X, Functor >::operator= ( Auto_Functor< Y, Functor > &  rhs)
inline
template<typename X , typename Functor >
ACE_Utils::Auto_Functor< X, Functor > & ACE_Utils::Auto_Functor< X, Functor >::operator= ( Auto_Functor< X, Functor > &  rhs)
inline
template<typename X , typename Functor >
template<typename Y >
Auto_Functor<X,Functor>& ACE_Utils::Auto_Functor< X, Functor >::operator= ( Auto_Functor< Y, Functor > &  rhs)
template<typename X , typename Functor >
ACE_Utils::Auto_Functor< X, Functor > & ACE_Utils::Auto_Functor< X, Functor >::operator= ( Auto_Functor_Ref< X, Functor >  rhs)
inline
template<typename X , typename Functor >
X * ACE_Utils::Auto_Functor< X, Functor >::release ( )
inline
template<typename X , typename Functor >
void ACE_Utils::Auto_Functor< X, Functor >::reset ( X *  p = 0)
template<typename X , typename Functor >
void ACE_Utils::Auto_Functor< X, Functor >::reset ( X *  p,
Functor  f 
)

Member Data Documentation

template<typename X , typename Functor >
Functor ACE_Utils::Auto_Functor< X, Functor >::f_
private
template<typename X , typename Functor >
X* ACE_Utils::Auto_Functor< X, Functor >::p_
private

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