Changeset 2065 for code/branches/objecthierarchy/src/core/Event.h
- Timestamp:
- Oct 30, 2008, 2:44:48 AM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
code/branches/objecthierarchy/src/core/Event.h
r2063 r2065 31 31 32 32 #include "CorePrereqs.h" 33 #include "Executor.h"34 35 #define SetEvent(classname, eventname, functionname, event) \36 SetEventGeneric(eventcontainer##classname##functionname, classname, eventname, orxonox::createExecutor(orxonox::createFunctor(&classname::functionname), std::string( #classname ) + "::" + #functionname), event, BaseObject)37 38 #define SetEventTemplate(classname, eventname, functionname, event, ...) \39 SetEventGeneric(eventcontainer##classname##functionname, classname, eventname, orxonox::createExecutor(orxonox::createFunctor<classname, __VA_ARGS__ >(&classname::functionname), std::string( #classname ) + "::" + #functionname), event, BaseObject)40 41 #define SetSubclassEvent(classname, eventname, functionname, event, subclassname) \42 SetEventGeneric(eventcontainer##classname##functionname, classname, eventname, orxonox::createExecutor(orxonox::createFunctor(&classname::functionname), std::string( #classname ) + "::" + #functionname), event, subclassname)43 44 #define SetSubclassEventTemplate(classname, eventname, functionname, event, subclassname, ...) \45 SetEventGeneric(eventcontainer##classname##functionname, classname, eventname, orxonox::createExecutor(orxonox::createFunctor<classname, __VA_ARGS__ >(&classname::functionname), std::string( #classname ) + "::" + #functionname), event, subclassname)46 47 #define SetEventGeneric(containername, classname, eventname, executor, event, subclassname) \48 orxonox::EventContainer* containername = this->getEventContainer(eventname); \49 if (!containername) \50 { \51 containername = new orxonox::EventContainer(std::string(eventname), executor, orxonox::ClassIdentifier<subclassname>::getIdentifier()); \52 this->addEventContainer(eventname, containername); \53 } \54 event.castedOriginator_ = dynamic_cast<subclassname*>(event.originator_); \55 containername->process(this, event)56 57 33 58 34 namespace orxonox … … 72 48 public: 73 49 EventContainer(const std::string& eventname, Executor* eventfunction, Identifier* subclass) : eventname_(eventname), eventfunction_(eventfunction), subclass_(subclass), activeEvents_(0) {} 74 ~EventContainer() 75 { delete this->eventfunction_; } 50 ~EventContainer(); 76 51 77 52 void process(BaseObject* object, const Event& event);
Note: See TracChangeset
for help on using the changeset viewer.