diff options
Diffstat (limited to 'Runtime/Core/Callbacks/CallbackArray.cpp')
-rw-r--r-- | Runtime/Core/Callbacks/CallbackArray.cpp | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/Runtime/Core/Callbacks/CallbackArray.cpp b/Runtime/Core/Callbacks/CallbackArray.cpp new file mode 100644 index 0000000..adea73f --- /dev/null +++ b/Runtime/Core/Callbacks/CallbackArray.cpp @@ -0,0 +1,40 @@ +#include "UnityPrefix.h" +#include "CallbackArray.h" + +CallbackArray::CallbackArray () +{ + for (int i=0;i<kMaxCallback;i++) + m_Callbacks[i] = NULL; +} + +void CallbackArray::Register (SimpleCallback* callback) +{ + for (int i=0;i<kMaxCallback;i++) + { + if (m_Callbacks[i] == NULL) + { + m_Callbacks[i] = callback; + return; + } + } + + AssertString("Callback registration failed. Not enough space."); +} + +void CallbackArray::Unregister (SimpleCallback* callback) +{ + for (int i=0;i<kMaxCallback;i++) + { + if (m_Callbacks[i] == callback) + m_Callbacks[i] = NULL; + } +} + +void CallbackArray::Invoke () +{ + for (int i=0;i<kMaxCallback;i++) + { + if (m_Callbacks[i]) + m_Callbacks[i] (); + } +}
\ No newline at end of file |