rlmm::one_at_a_time< Client, Lock > Struct Template Reference
[Utilities]

#include <rlmm/util.hh>

Inheritance diagram for rlmm::one_at_a_time< Client, Lock >:

Inheritance graph
[legend]
Collaboration diagram for rlmm::one_at_a_time< Client, Lock >:

Collaboration graph
[legend]
List of all members.

Detailed Description

template<template< typename > class Client, typename Lock = single_thread>
struct rlmm::one_at_a_time< Client, Lock >

Utility class for common behaviour.

Sub-classes of this class has methods to activate and deactivate a specific object. Sub-classes should implement the member function do_activate and do_deactivate. Preferably these member functions should be private or protected - which, however, requires that the sub-class befriends this class template:

      template <typename Lock>
      class one : public one_at_a_time<one,Lock>
      {
        template <template <typename> class C,typename L>
        friend class one_at_a_time;
        void do_activate() { activation code }
        void do_daactivate() { daactivation code }
        ...
      };
Parameters:
Client The sub class template
Lock The lock type.


Public Member Functions

client_typeactivate ()
void deactivate ()
bool is_active () const

Static Public Member Functions

static client_typeactive ()

Protected Types

typedef Lock lock_type
typedef Client< Lock > client_type
typedef guard< Lock > guard_type

Protected Member Functions

 one_at_a_time ()
 one_at_a_time (const one_at_a_time &o)
one_at_a_timeoperator= (const one_at_a_time &o)
virtual void do_activate ()=0
virtual void do_deactivate ()=0

Static Protected Attributes

static client_type_current = 0
static client_type _default
static lock_type _lock


Member Typedef Documentation

template<template< typename > class Client, typename Lock = single_thread>
typedef Client<Lock> rlmm::one_at_a_time< Client, Lock >::client_type [protected]
 

Client type.

template<template< typename > class Client, typename Lock = single_thread>
typedef guard<Lock> rlmm::one_at_a_time< Client, Lock >::guard_type [protected]
 

Guard type.

template<template< typename > class Client, typename Lock = single_thread>
typedef Lock rlmm::one_at_a_time< Client, Lock >::lock_type [protected]
 

Lock type.


Constructor & Destructor Documentation

template<template< typename > class Client, typename Lock = single_thread>
rlmm::one_at_a_time< Client, Lock >::one_at_a_time  )  [inline, protected]
 

Protected constructor.

template<template< typename > class Client, typename Lock = single_thread>
rlmm::one_at_a_time< Client, Lock >::one_at_a_time const one_at_a_time< Client, Lock > &  o  )  [inline, protected]
 

Proteced copy constructor.


Member Function Documentation

template<template< typename > class Client, typename Lock = single_thread>
client_type& rlmm::one_at_a_time< Client, Lock >::activate  )  [inline]
 

Activate an object.

Returns:
The old active object.

template<template< typename > class Client, typename Lock = single_thread>
static client_type& rlmm::one_at_a_time< Client, Lock >::active  )  [inline, static]
 

Return the active object.

template<template< typename > class Client, typename Lock = single_thread>
void rlmm::one_at_a_time< Client, Lock >::deactivate  )  [inline]
 

Deactivate an object.

template<template< typename > class Client, typename Lock = single_thread>
virtual void rlmm::one_at_a_time< Client, Lock >::do_activate  )  [protected, pure virtual]
 

Call-back at activation time.

Implemented in rlmm::basic_completion< Lock >, rlmm::basic_history< Lock >, rlmm::basic_key_map< Lock >, and rlmm::basic_terminal< Lock >.

template<template< typename > class Client, typename Lock = single_thread>
virtual void rlmm::one_at_a_time< Client, Lock >::do_deactivate  )  [protected, pure virtual]
 

Call-back at deactivation time.

Implemented in rlmm::basic_completion< Lock >, rlmm::basic_history< Lock >, rlmm::basic_key_map< Lock >, and rlmm::basic_terminal< Lock >.

template<template< typename > class Client, typename Lock = single_thread>
bool rlmm::one_at_a_time< Client, Lock >::is_active  )  const [inline]
 

Test if this oject is the active one.

template<template< typename > class Client, typename Lock = single_thread>
one_at_a_time& rlmm::one_at_a_time< Client, Lock >::operator= const one_at_a_time< Client, Lock > &  o  )  [inline, protected]
 

Protected assignment operator.


Member Data Documentation

template<template< typename > class Client, typename Lock = single_thread>
Client< Lock > * rlmm::one_at_a_time< Client, Lock >::_current = 0 [static, protected]
 

The current active object, if any.

template<template< typename > class Client, typename Lock = single_thread>
Client< Lock > rlmm::one_at_a_time< Client, Lock >::_default [static, protected]
 

The default object.

template<template< typename > class Client, typename Lock = single_thread>
Lock rlmm::one_at_a_time< Client, Lock >::_lock [static, protected]
 

The lock used.


The documentation for this struct was generated from the following file:
Top of page
Last update Fri Aug 26 15:19:53 2005
Christian Holm
Created by DoxyGen 1.4.4