aboutsummaryrefslogtreecommitdiff
path: root/src/libjin-lua/common/l_callback.cpp
blob: 4165ca6ca230280c4d6643aee4ebfd786b6a9312 (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);
		}

	}
}