Files
XCEngine/MVS/Music fluctuations/source/event/event.inl

49 lines
1021 B
C++

#include"Event.h"
template<class... ArgTypes>
ListenerID Event<ArgTypes...>::AddListener(Callback p_callback)
{
ListenerID listenerID = m_availableListenerID++;
m_callbacks.emplace(listenerID, p_callback);
return listenerID;
}
template<class... ArgTypes>
ListenerID Event<ArgTypes...>::operator+=(Callback p_callback)
{
return AddListener(p_callback);
}
template<class... ArgTypes>
bool Event<ArgTypes...>::RemoveListener(ListenerID p_listenerID)
{
//£¿£¿£¿£¿
return m_callbacks.erase(p_listenerID) != 0;
}
template<class... ArgTypes>
bool Event<ArgTypes...>::operator-=(ListenerID p_listenerID)
{
return RemoveListener(p_listenerID);
}
template<class... ArgTypes>
void Event<ArgTypes...>::RemoveAllListeners()
{
m_callbacks.clear();
}
template<class... ArgTypes>
uint64_t Event<ArgTypes...>::GetListenerCount()
{
return m_callbacks.size();
}
template<class... ArgTypes>
void Event<ArgTypes...>::Invoke(ArgTypes... p_args)
{
//£¡£¡£¡£¡
for (auto const& [key, value] : m_callbacks)
value(p_args...);
}