26 #include <ThirdParty/EASTL-master/include/EASTL/list.h> 27 #include <ThirdParty/EASTL-master/include/EASTL/utility.h> 58 typeid(*
this) !=
typeid(*pHandler2))
75 virtual void OnEvent(T&) = 0;
89 : m_pFunctionToCall(functionToCall)
96 m_pFunctionToCall(evt);
102 if (!IsSametype(pHandler2))
115 return this->m_pFunctionToCall == pHandlerCasted->m_pFunctionToCall;
119 void(*m_pFunctionToCall)(T&);
127 template<
typename T,
typename U>
133 : m_pCallerInstance(thisPtr)
134 , m_pMemberFunction(memberFunctionToCall)
141 if (m_pCallerInstance)
143 (m_pCallerInstance->*m_pMemberFunction)(evt);
150 if (!IsSametype(pHandler2))
163 return this->m_pCallerInstance == pHandlerCasted->m_pCallerInstance && this->m_pMemberFunction == pHandlerCasted->m_pMemberFunction;
167 U* m_pCallerInstance;
169 void(U::*m_pMemberFunction)(T&);
191 virtual void OnEvent() = 0;
205 : m_pFunctionToCall(functionToCall)
218 if (!IsSametype(pHandler2))
231 return this->m_pFunctionToCall == pHandlerCasted->m_pFunctionToCall;
235 void(*m_pFunctionToCall)();
249 : m_pCallerInstance(thisPtr)
250 , m_pMemberFunction(memberFunctionToCall)
257 if (m_pCallerInstance)
259 (m_pCallerInstance->*m_pMemberFunction)();
266 if (!IsSametype(pHandler2))
279 return this->m_pCallerInstance == pHandlerCasted->m_pCallerInstance && this->m_pMemberFunction == pHandlerCasted->m_pMemberFunction;
283 U* m_pCallerInstance;
285 void(U::*m_pMemberFunction)();
356 template<
typename T,
typename U>
430 for (eastl::list<
EventHandlerImpl<T>* >::iterator iter = m_eventHandlers.begin(); iter != m_eventHandlers.end(); ++iter)
439 m_eventHandlers.clear();
469 m_eventHandlers.push_back(pHandlerToAdd);
482 if (!pHandlerToRemove)
494 for (eastl::list<
EventHandlerImpl<T>* >::iterator iter = m_eventHandlers.begin(); iter != m_eventHandlers.end(); ++iter)
509 delete pFoundHandler;
514 m_eventHandlers.erase(iter);
520 if (pHandlerToRemove)
522 delete pHandlerToRemove;
523 pHandlerToRemove = 0;
581 for (eastl::list<
EventHandlerImpl<T>* >::iterator iter = m_eventHandlers.begin(); iter != m_eventHandlers.end(); ++iter)
615 for (eastl::list<
EventHandlerImpl<void>* >::iterator iter = m_eventHandlers.begin(); iter != m_eventHandlers.end(); ++iter)
bool IsSametype(EventHandlerImplBase< T > *pHandler2)
virtual void OnEvent(T &evt)
virtual void OnEvent(T &)=0
eastl::list< EventHandlerImpl< T > * > m_eventHandlers
virtual bool IsBindedToSameFunctionAs(EventHandlerImplBase< void > *pHandler2)
static EventHandlerImpl< T > * Bind(void(*nonMemberFunctionToCall)(T &))
virtual ~EventHandlerImplBase()
static EventHandlerImpl< void > * Bind(void(*nonMemberFunctionToCall)())
EventHandlerImplForNonMemberFunction(void(*functionToCall)())
virtual bool IsBindedToSameFunctionAs(EventHandlerImplBase< T > *)=0
static EventHandlerImpl< T > * Bind(void(U::*memberFunctionToCall)(T &), U *thisPtr)
static EventHandlerImpl< void > * Bind(void(U::*memberFunctionToCall)(), U *thisPtr)
EventHandlerImplForNonMemberFunction(void(*functionToCall)(T &))
virtual bool IsBindedToSameFunctionAs(EventHandlerImplBase< T > *pHandler2)
void operator()(T &eventData)