zypp::AutoDispose< _Tp > Class Template Reference

Reference counted access to a _Tp object calling a custom Dispose function when the last AutoDispose handle to it is destroyed or reset. More...

#include <AutoDispose.h>

List of all members.

Public Types

typedef boost::call_traits<
_Tp >::param_type 
param_type
typedef boost::call_traits<
_Tp >::reference 
reference
typedef boost::call_traits<
_Tp >::const_reference 
const_reference
typedef _Tp value_type
typedef boost::call_traits<
_Tp >::value_type 
result_type
typedef function< void(param_type)> Dispose
 Dispose function signatue.

Public Member Functions

 AutoDispose ()
 Default Ctor using default constructed value and nodispose function.
 AutoDispose (param_type value_r)
 Ctor taking value and using nodispose function.
 AutoDispose (param_type value_r, const Dispose &dispose_r)
 Ctor taking value and dispose function.
 operator reference () const
 Provide implicit conversion to _Tp&.
reference value () const
 Reference to the _Tp object.
reference operator * () const
 Reference to the _Tp object.
value_typeoperator-> () const
 Pointer to the _Tp object (asserted to be != NULL<>).
void reset ()
 Reset to default Ctor values.
void swap (AutoDispose &rhs)
 Exchange the contents of two AutoDispose objects.
const DisposegetDispose () const
 Return the current dispose function.
void setDispose (const Dispose &dispose_r)
 Set a new dispose function.
void resetDispose ()
 Set nodispose function.
void swapDispose (Dispose &dispose_r)
 Exchange the dispose function.

Static Public Member Functions

static void nodispose (param_type)
 Noop dispose function.

Private Attributes

shared_ptr< Impl_pimpl

Related Functions

(Note that these are not member functions.)

std::ostream & operator<< (std::ostream &str, const AutoDispose< _Tp > &obj)

Classes

struct  Impl


Detailed Description

template<class _Tp>
class zypp::AutoDispose< _Tp >

Reference counted access to a _Tp object calling a custom Dispose function when the last AutoDispose handle to it is destroyed or reset.

Note:
As with pointers, constness of an AutoDispose object does not apply to the stored _Tp object. If the stored _Tp object should be immutable, you should use AutoDispose<const _Tp><>.
Pass a filename to the application and provide the appropriate code to be exectued when the file is no longer needed:
 struct FileCache
 {
   Pathname getFile();
   void     releaseFile( const Pathname & );
 };

 static FileCache cache;

 void unlink( const Pathname & file_r );

 AutoDispose<const Pathname> provideFile( ... )
 {
   if ( file_is_in_cache )
     {
       // will call 'cache.releaseFile( file )'
       return AutoDispose<const Pathname>( cache.getFile(),
                                           bind( &FileCache::releaseFile, ref(cache), _1 ) );
     }
   else if ( file_is_temporary )
     {
       // will call 'unlink( file )'
       return AutoDispose<const Pathname>( file, unlink );
     }
   else if ( file_is_permanent )
     {
       // will do nothing.
       return AutoDispose<const Pathname>( file );
     }
   else
     {
       // will do nothing.
       return AutoDispose<const Pathname>();
     }
 }

Exception safe handling of temporary files:

 void provideFileAt( const Pathname & destination )
 {
   AutoDispose<const Pathname> guard( destination, unlink );

   // Any exception here will lead to 'unlink( destination )'
   // ...

   // On success: reset the dispose function to NOOP.
   guard.resetDispose();
 }

Definition at line 92 of file AutoDispose.h.


Member Typedef Documentation

template<class _Tp>
typedef boost::call_traits<_Tp>::param_type zypp::AutoDispose< _Tp >::param_type
 

Definition at line 95 of file AutoDispose.h.

template<class _Tp>
typedef boost::call_traits<_Tp>::reference zypp::AutoDispose< _Tp >::reference
 

Definition at line 96 of file AutoDispose.h.

template<class _Tp>
typedef boost::call_traits<_Tp>::const_reference zypp::AutoDispose< _Tp >::const_reference
 

Definition at line 97 of file AutoDispose.h.

template<class _Tp>
typedef _Tp zypp::AutoDispose< _Tp >::value_type
 

Definition at line 98 of file AutoDispose.h.

template<class _Tp>
typedef boost::call_traits<_Tp>::value_type zypp::AutoDispose< _Tp >::result_type
 

Definition at line 99 of file AutoDispose.h.

template<class _Tp>
typedef function<void ( param_type )> zypp::AutoDispose< _Tp >::Dispose
 

Dispose function signatue.

Definition at line 103 of file AutoDispose.h.


Constructor & Destructor Documentation

template<class _Tp>
zypp::AutoDispose< _Tp >::AutoDispose  )  [inline]
 

Default Ctor using default constructed value and nodispose function.

Definition at line 110 of file AutoDispose.h.

Referenced by zypp::AutoDispose< _Tp >::reset().

template<class _Tp>
zypp::AutoDispose< _Tp >::AutoDispose param_type  value_r  )  [inline]
 

Ctor taking value and using nodispose function.

Definition at line 115 of file AutoDispose.h.

template<class _Tp>
zypp::AutoDispose< _Tp >::AutoDispose param_type  value_r,
const Dispose dispose_r
[inline]
 

Ctor taking value and dispose function.

Definition at line 120 of file AutoDispose.h.


Member Function Documentation

template<class _Tp>
static void zypp::AutoDispose< _Tp >::nodispose param_type   )  [inline, static]
 

Noop dispose function.

Definition at line 106 of file AutoDispose.h.

Referenced by zypp::AutoDispose< _Tp >::resetDispose(), and zypp::AutoDispose< _Tp >::Impl::~Impl().

template<class _Tp>
zypp::AutoDispose< _Tp >::operator reference  )  const [inline]
 

Provide implicit conversion to _Tp&.

Definition at line 127 of file AutoDispose.h.

References zypp::AutoDispose< _Tp >::_pimpl.

template<class _Tp>
reference zypp::AutoDispose< _Tp >::value  )  const [inline]
 

Reference to the _Tp object.

Definition at line 131 of file AutoDispose.h.

References zypp::AutoDispose< _Tp >::_pimpl.

template<class _Tp>
reference zypp::AutoDispose< _Tp >::operator *  )  const [inline]
 

Reference to the _Tp object.

Definition at line 135 of file AutoDispose.h.

References zypp::AutoDispose< _Tp >::_pimpl.

template<class _Tp>
value_type* zypp::AutoDispose< _Tp >::operator->  )  const [inline]
 

Pointer to the _Tp object (asserted to be != NULL<>).

Definition at line 139 of file AutoDispose.h.

References zypp::AutoDispose< _Tp >::_pimpl.

template<class _Tp>
void zypp::AutoDispose< _Tp >::reset  )  [inline]
 

Reset to default Ctor values.

Definition at line 143 of file AutoDispose.h.

References zypp::AutoDispose< _Tp >::AutoDispose().

template<class _Tp>
void zypp::AutoDispose< _Tp >::swap AutoDispose< _Tp > &  rhs  )  [inline]
 

Exchange the contents of two AutoDispose objects.

Definition at line 147 of file AutoDispose.h.

References zypp::AutoDispose< _Tp >::_pimpl.

template<class _Tp>
const Dispose& zypp::AutoDispose< _Tp >::getDispose  )  const [inline]
 

Return the current dispose function.

Definition at line 152 of file AutoDispose.h.

References zypp::AutoDispose< _Tp >::_pimpl.

template<class _Tp>
void zypp::AutoDispose< _Tp >::setDispose const Dispose dispose_r  )  [inline]
 

Set a new dispose function.

Definition at line 156 of file AutoDispose.h.

References zypp::AutoDispose< _Tp >::_pimpl.

Referenced by zypp::AutoDispose< _Tp >::resetDispose().

template<class _Tp>
void zypp::AutoDispose< _Tp >::resetDispose  )  [inline]
 

Set nodispose function.

Definition at line 160 of file AutoDispose.h.

References zypp::AutoDispose< _Tp >::nodispose(), and zypp::AutoDispose< _Tp >::setDispose().

Referenced by zypp::applydeltarpm::provide().

template<class _Tp>
void zypp::AutoDispose< _Tp >::swapDispose Dispose dispose_r  )  [inline]
 

Exchange the dispose function.

+

Definition at line 164 of file AutoDispose.h.

References zypp::AutoDispose< _Tp >::_pimpl.


Friends And Related Function Documentation

template<class _Tp>
std::ostream & operator<< std::ostream &  str,
const AutoDispose< _Tp > &  obj
[related]
 

<_Tp> Stream output of the _Tp object.

Definition at line 189 of file AutoDispose.h.


Member Data Documentation

template<class _Tp>
shared_ptr<Impl> zypp::AutoDispose< _Tp >::_pimpl [private]
 

Definition at line 183 of file AutoDispose.h.

Referenced by zypp::AutoDispose< _Tp >::getDispose(), zypp::AutoDispose< _Tp >::operator *(), zypp::AutoDispose< _Tp >::operator reference(), zypp::AutoDispose< _Tp >::operator->(), zypp::AutoDispose< _Tp >::setDispose(), zypp::AutoDispose< _Tp >::swap(), zypp::AutoDispose< _Tp >::swapDispose(), and zypp::AutoDispose< _Tp >::value().


The documentation for this class was generated from the following file:
Generated on Wed Sep 27 01:17:03 2006 for zypp by  doxygen 1.4.6