sigx++  2.0.1
Public Types | Public Member Functions | Protected Member Functions | Friends
sigx::safe_lockable< T_type, T_mutex > Struct Template Reference

Makes T_type lockable. More...

#include <lockable.h>

Inheritance diagram for sigx::safe_lockable< T_type, T_mutex >:
sigx::lockable_base< T_mutex > sigx::noncopyable sigx::lockable< context_container_type, Glib::Mutex > sigx::lockable< Glib::Thread *, Glib::Mutex > sigx::lockable< T_type, Glib::Mutex > sigx::lockable< T_type, Glib::RecMutex > sigx::lockable< T_type, Glib::RWLock > sigx::lockable< T_type, Glib::StaticMutex > sigx::lockable< T_type, Glib::StaticRecMutex > sigx::lockable< T_type, T_mutex >

Public Types

typedef lockable_base< T_mutex > parent_type
 
typedef T_type acquired_type
 
typedef volatile_trait
< acquired_type >::add 
volatile_type
 
typedef
std::tr1::add_reference
< typename volatile_trait
< acquired_type >::remove >
::type 
reference_type
 
typedef
std::tr1::add_reference
< volatile_type >::type 
volatile_reference_type
 
typedef
std::tr1::add_reference
< typename const_trait
< reference_type >::add >
::type 
const_reference_type
 
typedef
std::tr1::add_reference
< typename const_trait
< volatile_type >::add >::type 
cv_reference_type
 
typedef
std::tr1::add_reference
< typename std::tr1::add_const
< acquired_type >::type >
::type 
toplevel_const_reference_type
 
- Public Types inherited from sigx::lockable_base< T_mutex >
typedef T_mutex mutex_type
 

Public Member Functions

 safe_lockable ()
 Default constructor. More...
 
 safe_lockable (toplevel_const_reference_type _a_value)
 Constructs a lockable initializing T_type with _a_value. More...
 
- Public Member Functions inherited from sigx::lockable_base< T_mutex >
mutex_typemutex () const throw ()
 

Protected Member Functions

volatile_reference_type access_volatile () throw ()
 
reference_type access_nonvolatile () throw ()
 
cv_reference_type access_volatile () const throw ()
 
const_reference_type access_nonvolatile () const throw ()
 
- Protected Member Functions inherited from sigx::lockable_base< T_mutex >
 lockable_base ()
 
- Protected Member Functions inherited from sigx::noncopyable
 noncopyable ()
 
 ~noncopyable ()
 

Friends

template<locking_policy I_policy, typename T_type1 , typename T_mutex1 , typename T_islockable >
class lock_acquirer
 

Additional Inherited Members

- Protected Attributes inherited from sigx::lockable_base< T_mutex >
mutex_type m_mutex
 

Detailed Description

template<typename T_type, typename T_mutex>
struct sigx::safe_lockable< T_type, T_mutex >

Makes T_type lockable.

The "safe" in safe_lockable means that access to the mutex and the locked type is denied, they are only accessible through a lock_acquirer.

The following template arguments are used:

typedef lockable<int, boost::mutex> mutex_lockable_int;
Note
lockables are inseparably tied together and constness for lockables and the locked type is transitive, i.e no matter whether the type to protect (T_type) or the lockable itself is somewhere declared const you get only const access to the variable to protect

Member Typedef Documentation

template<typename T_type , typename T_mutex >
typedef T_type sigx::safe_lockable< T_type, T_mutex >::acquired_type
template<typename T_type , typename T_mutex >
typedef std::tr1::add_reference<typename const_trait<reference_type>::add>::type sigx::safe_lockable< T_type, T_mutex >::const_reference_type
template<typename T_type , typename T_mutex >
typedef std::tr1::add_reference<typename const_trait<volatile_type>::add>::type sigx::safe_lockable< T_type, T_mutex >::cv_reference_type
template<typename T_type , typename T_mutex >
typedef lockable_base<T_mutex> sigx::safe_lockable< T_type, T_mutex >::parent_type
template<typename T_type , typename T_mutex >
typedef std::tr1::add_reference<typename volatile_trait<acquired_type>::remove>::type sigx::safe_lockable< T_type, T_mutex >::reference_type
template<typename T_type , typename T_mutex >
typedef std::tr1::add_reference<typename std::tr1::add_const<acquired_type>::type>::type sigx::safe_lockable< T_type, T_mutex >::toplevel_const_reference_type
template<typename T_type , typename T_mutex >
typedef std::tr1::add_reference<volatile_type>::type sigx::safe_lockable< T_type, T_mutex >::volatile_reference_type
template<typename T_type , typename T_mutex >
typedef volatile_trait<acquired_type>::add sigx::safe_lockable< T_type, T_mutex >::volatile_type

Constructor & Destructor Documentation

template<typename T_type , typename T_mutex >
sigx::safe_lockable< T_type, T_mutex >::safe_lockable ( )
inline

Default constructor.

T_type is initialized with its default ctor or its default value

template<typename T_type , typename T_mutex >
sigx::safe_lockable< T_type, T_mutex >::safe_lockable ( toplevel_const_reference_type  _a_value)
inline

Constructs a lockable initializing T_type with _a_value.

Member Function Documentation

template<typename T_type , typename T_mutex >
reference_type sigx::safe_lockable< T_type, T_mutex >::access_nonvolatile ( )
throw (
)
inlineprotected
Returns
reference to non-volatile T_type

Referenced by sigx::auto_dispatchable::auto_dispatchable(), and sigx::glib_threadable::~glib_threadable().

template<typename T_type , typename T_mutex >
const_reference_type sigx::safe_lockable< T_type, T_mutex >::access_nonvolatile ( ) const
throw (
)
inlineprotected
Returns
reference to non-volatile T_type
template<typename T_type , typename T_mutex >
volatile_reference_type sigx::safe_lockable< T_type, T_mutex >::access_volatile ( )
throw (
)
inlineprotected
Returns
reference to volatile T_type
template<typename T_type , typename T_mutex >
cv_reference_type sigx::safe_lockable< T_type, T_mutex >::access_volatile ( ) const
throw (
)
inlineprotected
Returns
reference to volatile T_type

Friends And Related Function Documentation

template<typename T_type , typename T_mutex >
template<locking_policy I_policy, typename T_type1 , typename T_mutex1 , typename T_islockable >
friend class lock_acquirer
friend

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