summaryrefslogtreecommitdiff
path: root/Runtime/Core/Callbacks/CallbackArray.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Runtime/Core/Callbacks/CallbackArray.cpp')
-rw-r--r--Runtime/Core/Callbacks/CallbackArray.cpp40
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