sigx::safe_lockable< T_type, T_mutex > Struct Template Reference
[Threadsafety]

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

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 Member Functions

 safe_lockable ()
 Default constructor.
 safe_lockable (toplevel_const_reference_type _a_value)
 Constructs a lockable initializing T_type with _a_value.

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

Friends

class lock_acquirer

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>
const_reference_type sigx::safe_lockable< T_type, T_mutex >::access_nonvolatile (  )  const throw () [inline, protected]

Returns:
reference to non-volatile T_type

template<typename T_type, typename T_mutex>
reference_type sigx::safe_lockable< T_type, T_mutex >::access_nonvolatile (  )  throw () [inline, protected]

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>
cv_reference_type sigx::safe_lockable< T_type, T_mutex >::access_volatile (  )  const throw () [inline, protected]

Returns:
reference to volatile T_type

template<typename T_type, typename T_mutex>
volatile_reference_type sigx::safe_lockable< T_type, T_mutex >::access_volatile (  )  throw () [inline, protected]

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:

Generated on Wed Jan 28 21:38:00 2009 for sigx++ by  doxygen 1.5.8