#include <base_event.hh>

Public Member Functions | |
| Event (void) | |
| ~Event () | |
| void | Listen (SharedPtr< ListenerFunctor > listener) |
| Register a listener. | |
| void | Unlisten (SharedPtr< ListenerFunctor > listener) |
| Unregister a listener. | |
| void | Broadcast (EVENT event) |
Private Types | |
| typedef FastLock | Lock |
| typedef std::list < SharedPtr < ListenerFunctor > > | Listeners |
Private Attributes | |
| Listeners | mListeners |
| Lock * | mInstanceLock |
Classes | |
| class | ListenerFunctor |
| Listener functor called when event is broadcast. More... | |
///
/// 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
/// {
/// void operator()( Void nothing ); // Void class substitutes for intrinsic void
/// };
///
/// class MessageListener : public Event<Message>::ListenerFunctor
/// {
/// 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
///
/// typedef FastLock base::Event< EVENT >::Lock [private] |
typedef std::list< SharedPtr<ListenerFunctor> > base::Event< EVENT >::Listeners [private] |
| base::Event< EVENT >::Event | ( | void | ) | [inline] |
| base::Event< EVENT >::~Event | ( | ) | [inline] |
| void base::Event< EVENT >::Listen | ( | SharedPtr< ListenerFunctor > | listener | ) | [inline] |
Register a listener.
| void base::Event< EVENT >::Unlisten | ( | SharedPtr< ListenerFunctor > | listener | ) | [inline] |
Unregister a listener.
| void base::Event< EVENT >::Broadcast | ( | EVENT | event | ) | [inline] |
Broadcast an object to all listeners. If no arg exists, call as Broadcast( Void() ).
Listeners base::Event< EVENT >::mListeners [private] |
Lock* base::Event< EVENT >::mInstanceLock [mutable, private] |
Palomino 3D Engine documents generated by doxygen 1.5.3 on Fri Nov 23 11:26:19 2007