Homepage Demos Overview Downloads Tutorials Reference
Credits
Main Page | Namespace List | Class Hierarchy | Alphabetical List | Compound List | File List | Namespace Members | Compound Members | File Members | Related Pages | Search

EventRouter::EventMapper Class Reference

#include <EventRouter.h>

List of all members.


Detailed Description

Does the actual storage of the mapping between EventBase's and the EventListeners/EventTrappers who should receive them.

Actually only stores void*'s, so it's more general than just Listeners or Trappers

Definition at line 182 of file EventRouter.h.

Public Member Functions

 EventMapper ()
 constructor

void addMapping (void *el, EventBase::EventGeneratorID_t egid)
 Adds a listener for all events from a given event generator.

void addMapping (void *el, EventBase::EventGeneratorID_t egid, unsigned int sid, EventBase::EventTypeID_t etid)
 Adds a listener for a specific source id and type from a given event generator.

void removeMapping (void *el, EventBase::EventGeneratorID_t egid)
 Removes a listener for all events from a given event generator.

void removeMapping (void *el, EventBase::EventGeneratorID_t egid, unsigned int sid, EventBase::EventTypeID_t etid)
 Removes a listener for a specific source id and type from a given event generator.

void clean ()
 compresses empty data structures

void clear ()
 Resets the mapping.

template<class T> void getMapping (const EventBase &e, std::vector< T * > &listeners)
 builds a list of all listeners which should receive the event, templated to typecast the pointers for you

bool hasMapping (EventBase::EventGeneratorID_t egid)
 so stuff can tell if it even needs to bother generating an event...

bool hasMapping (EventBase::EventGeneratorID_t egid, unsigned int sid)
 so stuff can tell if it even needs to bother generating an event...

bool hasMapping (EventBase::EventGeneratorID_t egid, unsigned int sid, EventBase::EventTypeID_t etid)
 so stuff can tell if it even needs to bother generating an event...


Protected Types

typedef std::map< unsigned
int, std::vector< void * >,
std::less< unsigned int > > 
SIDtoListenerVectorMap_t
 a mapping from source IDs (unsigned ints), each to a vector of pointers to listeners


Protected Attributes

std::vector< void * > allevents [EventBase::numEGIDs]
 an array of vectors of pointers to listeners... in other words, a vector of listener pointers for each generator

SIDtoListenerVectorMap_tfilteredevents [EventBase::numEGIDs][EventBase::numETIDs]
 not for the faint of heart: a matrix of mappings to vectors of pointers to listeners


Private Member Functions

 EventMapper (const EventMapper &)
 this shouldn't be called...

EventMapper operator= (const EventMapper &)
 this shouldn't be called...


Member Typedef Documentation

typedef std::map<unsigned int,std::vector<void*>,std::less<unsigned int> > EventRouter::EventMapper::SIDtoListenerVectorMap_t [protected]
 

a mapping from source IDs (unsigned ints), each to a vector of pointers to listeners

main use in filteredevents

See also:
filteredevents

Definition at line 222 of file EventRouter.h.


Constructor & Destructor Documentation

EventRouter::EventMapper::EventMapper  ) 
 

constructor

Definition at line 162 of file EventRouter.cc.

References filteredevents, EventBase::numEGIDs, and EventBase::numETIDs.

EventRouter::EventMapper::EventMapper const EventMapper  )  [private]
 

this shouldn't be called...


Member Function Documentation

void EventRouter::EventMapper::addMapping void *  el,
EventBase::EventGeneratorID_t  egid,
unsigned int  sid,
EventBase::EventTypeID_t  etid
 

Adds a listener for a specific source id and type from a given event generator.

Definition at line 168 of file EventRouter.cc.

References filteredevents, and SIDtoListenerVectorMap_t.

void EventRouter::EventMapper::addMapping void *  el,
EventBase::EventGeneratorID_t  egid
[inline]
 

Adds a listener for all events from a given event generator.

Definition at line 187 of file EventRouter.h.

References allevents.

void EventRouter::EventMapper::clean  ) 
 

compresses empty data structures

Definition at line 212 of file EventRouter.cc.

References filteredevents, EventBase::numEGIDs, EventBase::numETIDs, and SIDtoListenerVectorMap_t.

void EventRouter::EventMapper::clear  ) 
 

Resets the mapping.

Definition at line 247 of file EventRouter.cc.

References filteredevents, EventBase::numEGIDs, EventBase::numETIDs, and SIDtoListenerVectorMap_t.

template<class T>
void EventRouter::EventMapper::getMapping const EventBase e,
std::vector< T * > &  listeners
 

builds a list of all listeners which should receive the event, templated to typecast the pointers for you

Parameters:
e the key event
listeners upon return, the resulting list of listeners e maps to
listeners is not cleared prior to building, new listeners are pushed on end
Results are in the order: all specific matches first, all generator listeners second, in order they were added to the EventMapper.

Definition at line 302 of file EventRouter.cc.

References allevents, filteredevents, EventBase::getGeneratorID(), EventBase::getSourceID(), EventBase::getTypeID(), and SIDtoListenerVectorMap_t.

bool EventRouter::EventMapper::hasMapping EventBase::EventGeneratorID_t  egid,
unsigned int  sid,
EventBase::EventTypeID_t  etid
 

so stuff can tell if it even needs to bother generating an event...

Returns:
true if it has any listeners, false otherwise

Definition at line 289 of file EventRouter.cc.

References allevents, filteredevents, and SIDtoListenerVectorMap_t.

bool EventRouter::EventMapper::hasMapping EventBase::EventGeneratorID_t  egid,
unsigned int  sid
 

so stuff can tell if it even needs to bother generating an event...

Returns:
true if it has any listeners, false otherwise

Definition at line 275 of file EventRouter.cc.

References allevents, filteredevents, EventBase::numETIDs, and SIDtoListenerVectorMap_t.

bool EventRouter::EventMapper::hasMapping EventBase::EventGeneratorID_t  egid  ) 
 

so stuff can tell if it even needs to bother generating an event...

Returns:
true if it has any listeners, false otherwise

Definition at line 260 of file EventRouter.cc.

References allevents, filteredevents, EventBase::numETIDs, and SIDtoListenerVectorMap_t.

EventMapper EventRouter::EventMapper::operator= const EventMapper  )  [private]
 

this shouldn't be called...

void EventRouter::EventMapper::removeMapping void *  el,
EventBase::EventGeneratorID_t  egid,
unsigned int  sid,
EventBase::EventTypeID_t  etid
 

Removes a listener for a specific source id and type from a given event generator.

Doesn't necessarily remove the vector or mapping if this was the last listener, use clean() to do that

Definition at line 201 of file EventRouter.cc.

References filteredevents, and SIDtoListenerVectorMap_t.

void EventRouter::EventMapper::removeMapping void *  el,
EventBase::EventGeneratorID_t  egid
 

Removes a listener for all events from a given event generator.

Doesn't necessarily remove the vector or mapping if this was the last listener, use clean() to do that

Definition at line 184 of file EventRouter.cc.

References allevents, filteredevents, EventBase::numETIDs, and SIDtoListenerVectorMap_t.


Member Data Documentation

std::vector<void*> EventRouter::EventMapper::allevents[EventBase::numEGIDs] [protected]
 

an array of vectors of pointers to listeners... in other words, a vector of listener pointers for each generator

Definition at line 225 of file EventRouter.h.

SIDtoListenerVectorMap_t* EventRouter::EventMapper::filteredevents[EventBase::numEGIDs][EventBase::numETIDs] [protected]
 

not for the faint of heart: a matrix of mappings to vectors of pointers to listeners

Definition at line 227 of file EventRouter.h.


The documentation for this class was generated from the following files:
Tekkotsu v1.4
Generated Sat Jul 19 00:08:56 2003 by Doxygen 1.3.2