summaryrefslogtreecommitdiff
path: root/Runtime/Utilities/AutoInvoke.h
blob: a443960d70d1a688ebed86b3557959b1740f8ff5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
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);