libzypp  11.13.5
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)
inlineexplicit

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)
inlineexplicit

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: