libzypp  13.10.6
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>

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. More...
 

Public Member Functions

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

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: