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< 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.
 safe_lockable (toplevel_const_reference_type _a_value)
 Constructs a lockable initializing T_type with _a_value.
- 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

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>
friend class lock_acquirer
friend

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