aboutsummaryrefslogtreecommitdiff
path: root/src/libjin-lua/common/l_callback.cpp
blob: a2adcea960c1c007a2ddcd80150aa148ad4cf098 (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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include "l_callback.h"

namespace JinEngine
{
    namespace Lua
    {

        LuaCallback::LuaCallback(lua_State* L)
            : mLuaFunc(nullptr)
            , mParams(0)
            , mL(L)
        {
        }

        LuaCallback::~LuaCallback()
        {
            delete mLuaFunc;
            for (auto p : mParams)
                delete p;
        }

        void LuaCallback::setFunc(int i)
        {
            if (mLuaFunc != nullptr)
                delete mLuaFunc;
            mLuaFunc = new LuaRef(mL, i);
        }

        void LuaCallback::pushParam(int i)
        {
            mParams.push_back(new LuaRef(mL, i));
        }

        void LuaCallback::call()
        {
            mLuaFunc->push();
            for (auto p : mParams)
                p->push();
            luax_call(mL, mParams.size(), 0);
        }

    }
}