summaryrefslogtreecommitdiff
path: root/Runtime/Utilities/AutoInvoke.h
diff options
context:
space:
mode:
Diffstat (limited to 'Runtime/Utilities/AutoInvoke.h')
-rw-r--r--Runtime/Utilities/AutoInvoke.h27
1 files changed, 27 insertions, 0 deletions
diff --git a/Runtime/Utilities/AutoInvoke.h b/Runtime/Utilities/AutoInvoke.h
new file mode 100644
index 0000000..a443960
--- /dev/null
+++ b/Runtime/Utilities/AutoInvoke.h
@@ -0,0 +1,27 @@
+#pragma once
+
+typedef void(*AutoInvokeAction)();
+
+// RAII auto call
+class AutoInvokerWhenLeave
+{
+public:
+ AutoInvokerWhenLeave(AutoInvokeAction func)
+ {
+ m_Func = func;
+ };
+ ~AutoInvokerWhenLeave()
+ {
+ if (m_Func)
+ {
+ m_Func();
+ }
+ }
+private:
+ AutoInvokeAction m_Func;
+
+};
+
+#define InvokeWhenLeave(func) \
+AutoInvokerWhenLeave auto_invoker = AutoInvokerWhenLeave(func);
+