#include "ofConstants.h" #ifdef OF_USING_POCO #include "Poco/FIFOEvent.h" #include "Poco/Delegate.h" using Poco::delegate; //----------------------------------------- // define ofEvent as a poco FIFOEvent // to create your own events use: // ofEvent myEvent template class ofEvent: public Poco::FIFOEvent {}; //---------------------------------------------------- // register any method of any class to an event. // the method must provide one of the following // signatures: // void method(ArgumentsType & args) // void method(const void * sender, ArgumentsType &args) // ie: // ofAddListener(addon.newIntEvent, this, &Class::method) template static void ofAddListener(EventType & event, ListenerClass * listener, void (ListenerClass::*listenerMethod)(ArgumentsType&)){ event += delegate(listener, listenerMethod); } //---------------------------------------------------- // unregister any method of any class to an event. // the method must provide one the following // signatures: // void method(ArgumentsType & args) // void method(const void * sender, ArgumentsType &args) // ie: // ofAddListener(addon.newIntEvent, this, &Class::method) template static void ofRemoveListener(EventType & event, ListenerClass * listener, void (ListenerClass::*listenerMethod)(ArgumentsType&)){ event -= delegate(listener, listenerMethod); } //---------------------------------------------------- // notifies an event so all the registered listeners // get called // ie: // ofNotifyEvent(addon.newIntEvent, intArgument, this) // // or in case there's no sender: // ofNotifyEvent(addon.newIntEvent, intArgument) template static void ofNotifyEvent(EventType & event, ArgumentsType & args, SenderType * sender){ event.notify(sender,args); } template static void ofNotifyEvent(EventType & event, ArgumentsType & args){ event.notify(NULL,args); } #endif