SimCallback.H File Reference

#include <typeinfo>
#include "rutz/shared_ptr.h"
#include "rutz/demangle.h"
#include "Simulation/SimEventQueueFlag.H"
#include "Util/log.H"
#include "Util/sformat.H"
Include dependency graph for SimCallback.H:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  SimCallbackBase
 A SimEventQueue callback for SimModule. More...
class  SimCallback< Module, Event >
 Template class for SimEventQueue callbacks. More...
struct  SimCallbackCompare
 Functor used to compare two SimCallbackBase objects, sorting by priority. More...

Defines

#define SIMCALLBACK_DECLARE(classname, eventname)
 Macro to declare a SimCallback (use in your .H).
#define SIMCALLBACK_INIT(eventname,...)   itsCallback##eventname(this, &itsSimCallbackClassTypeFor##eventname::on##eventname, ## __VA_ARGS__ )
 Init a SimCallback created by SIMCALLBACK_DECLARE.

Detailed Description

A callback when some SimEvent is received by SimEventQueue

Definition in file SimCallback.H.


Define Documentation

#define SIMCALLBACK_DECLARE ( classname,
eventname   ) 
Value:
void on##eventname(SimEventQueue& q, rutz::shared_ptr<eventname>& e);       \
  typedef classname itsSimCallbackClassTypeFor##eventname;                    \
  SimCallback<classname, eventname> itsCallback##eventname;

Macro to declare a SimCallback (use in your .H).

This will declare a SimCallback called itsCallback[eventname] and a function called on[eventname] which you will need to implement. For example:

is equivalent to:

  void onSimEventInputFrame(SimEventQueue& q, rutz::shared_ptr<SimEventInputFrame>& e);
  SimCallback<Retina, SimEventInputFrame> itsCallbackSimEventInputFrame;

then make sure you use the macro SIMCALLBACK_INIT in your class constructor, and that you implement onSimEventInputFrame() somewhere in your .C file. In our example:

  Retina::Retina(...) :
    ...,
    SIMCALLBACK_INIT(SimEventInputFrame)
  { }

  void Retina::onSimEventInputFrame(SimEventQueue& q, rutz::shared_ptr<SimEventInputFrame>& e)
  { do_something(); }

Have a look at Retina and other modules in src/Neuro for examples of usage.

Definition at line 220 of file SimCallback.H.

#define SIMCALLBACK_INIT ( eventname,
...   )     itsCallback##eventname(this, &itsSimCallbackClassTypeFor##eventname::on##eventname, ## __VA_ARGS__ )

Init a SimCallback created by SIMCALLBACK_DECLARE.

Takes possible optional arguments which are the ones that have default values in the SimCallback constructor, namely: const int priority = 0, const SimEventQueueFlag flags = SEQ_UNMARKED | SEQ_MARK, const SimModule* eventsource = 0.

Definition at line 231 of file SimCallback.H.

Generated on Sun May 8 08:42:51 2011 for iLab Neuromorphic Vision Toolkit by  doxygen 1.6.3