00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #include "asHasEvents.h"
00018
00019 #ifdef __COMPILE_WITH_ANGELSCRIPT__
00020
00021 #include "ScriptedEvent.h"
00022
00025 bool connectEventSignal(const std::string &slotName, asIScriptObject *object,
00026 const std::string &function, HasEvents *container)
00027 {
00028
00029 ScriptedEvent *scriptedEvent = new ScriptedEvent(object, function);
00030
00031
00032 if(container->connectEventSignal(slotName, scriptedEvent, &ScriptedEvent::onEvent))
00033 {
00034
00035 std::stringstream ss;
00036 ss << slotName << "#disconnect[" << object->GetTypeId() << "-"
00037 << object->GetObjectType()->GetMethodIdByName(function.c_str()) << "]";
00038
00039 container->createEventSlot(ss.str());
00040 container->connectEventSignal(ss.str(), scriptedEvent, &ScriptedEvent::onDisconnect);
00041
00042
00043 return true;
00044 }
00045
00046 else
00047 {
00048 scriptedEvent->drop();
00049 return false;
00050 }
00051 }
00052
00055 void disconnectEventSignal(const std::string &slotName, asIScriptObject *object,
00056 const std::string &function, HasEvents *container)
00057 {
00058
00059 std::stringstream ss;
00060 ss << slotName << "#disconnect[" << object->GetTypeId() << "-"
00061 << object->GetObjectType()->GetMethodIdByName(function.c_str()) << "]";
00062
00063 container->emitEvent(ss.str());
00064
00065
00066 container->removeEventSlot(ss.str());
00067 }
00068
00069 #endif // __COMPILE_WITH_ANGELSCRIPT__
00070
00071