Classes | Public Member Functions | Private Types | Private Attributes

base::Event< EVENT > Class Template Reference

Broadcasts events to registered listener functors. More...

#include <_src_base_event.hh>

List of all members.

Classes

class  ListenerFunctor
 Listener functor called when event is broadcast. More...

Public Member Functions

 Event (void)
 ~Event ()
void Listen (shptr< ListenerFunctor > listener)
 Register a listener.
void Unlisten (shptr< ListenerFunctor > listener)
 Unregister a listener.
void Broadcast (EVENT event)

Private Types

typedef std::list< shptr
< ListenerFunctor > > 
Listeners

Private Attributes

Listeners mListeners

Detailed Description

template<typename EVENT = Void>
class base::Event< EVENT >

Broadcasts events to registered listener functors.

///
/// Overview:
/// ---------
/// This class provides a registry for listener functors.
/// Broadcast() calls every listener.
///
/// The purpose is similar to the Chain of Responsibility design pattern,
/// but listeners are not aware of a chain nor each other.
///
/// Usage and examples:
/// -------------------
/// In general, broadcasting should be done at the very beginning
/// or very end of a function to avoid inconsistent state.
/// Event objects are optional and are passed by value to listeners.
///
/// Event<>         mEventReady;
/// Event<Message>  mEventMessage;
///
/// class ReadyListener : public Event<>::ListenerFunctor
/// {
///     virtual void operator()( Void nothing );  // Void class substitutes for intrinsic void
/// };
///
/// class MessageListener : public Event<Message>::ListenerFunctor
/// {
///     virtual void operator()( Message msg );
/// };
///
/// mEvent.Listen( new ReadyListener );  // construct and pass functor to Listen()
/// mEvent.Listen( new MessageListener );
///
/// mEvent.Broadcast( Void() );  // template restriction: simply "Broadcast()" won't compile
///
/// 

Member Typedef Documentation

template<typename EVENT = Void>
typedef std::list< shptr<ListenerFunctor> > base::Event< EVENT >::Listeners [private]

Constructor & Destructor Documentation

template<typename EVENT = Void>
base::Event< EVENT >::Event ( void   )  [inline]
template<typename EVENT = Void>
base::Event< EVENT >::~Event (  )  [inline]

Member Function Documentation

template<typename EVENT = Void>
void base::Event< EVENT >::Broadcast ( EVENT  event  )  [inline]

Broadcast an object to all listeners. If no arg exists, call as Broadcast( Void() ).

template<typename EVENT = Void>
void base::Event< EVENT >::Listen ( shptr< ListenerFunctor listener  )  [inline]

Register a listener.

template<typename EVENT = Void>
void base::Event< EVENT >::Unlisten ( shptr< ListenerFunctor listener  )  [inline]

Unregister a listener.


Member Data Documentation

template<typename EVENT = Void>
Listeners base::Event< EVENT >::mListeners [private]

The documentation for this class was generated from the following file:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
Palomino Flight Simulator documents generated by doxygen 1.7.1 on Tue May 15 2012 22:40:10