libzypp  10.5.0
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.

Classes

struct  Impl

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 no dispose function.
 AutoDispose (const Dispose &dispose_r)
 Ctor taking dispose function and using default constructed value.
 AutoDispose (param_type value_r)
 Ctor taking value and no dispose 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 no dispose function.
void swapDispose (Dispose &dispose_r)
 Exchange the dispose function.

Private Attributes

shared_ptr< Impl_pimpl

Related Functions

(Note that these are not member functions.)

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

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 executed 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 no dispose function.

Definition at line 107 of file AutoDispose.h.

template<class _Tp>
zypp::AutoDispose< _Tp >::AutoDispose ( const Dispose dispose_r) [inline, explicit]

Ctor taking dispose function and using default constructed value.

Definition at line 112 of file AutoDispose.h.

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

Ctor taking value and no dispose function.

Definition at line 117 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 122 of file AutoDispose.h.


Member Function Documentation

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

Provide implicit conversion to _Tp&.

Definition at line 129 of file AutoDispose.h.

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

Reference to the _Tp object.

Definition at line 133 of file AutoDispose.h.

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

Reference to the _Tp object.

Definition at line 137 of file AutoDispose.h.

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

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

Definition at line 141 of file AutoDispose.h.

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

Reset to default Ctor values.

Definition at line 145 of file AutoDispose.h.

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

Exchange the contents of two AutoDispose objects.

Definition at line 149 of file AutoDispose.h.

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

Return the current dispose function.

Definition at line 154 of file AutoDispose.h.

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

Set a new dispose function.

Definition at line 158 of file AutoDispose.h.

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

Set no dispose function.

Definition at line 162 of file AutoDispose.h.

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

Exchange the dispose function.

+

Definition at line 166 of file AutoDispose.h.


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 194 of file AutoDispose.h.


Member Data Documentation

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

Definition at line 188 of file AutoDispose.h.


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