aboutsummaryrefslogtreecommitdiff
path: root/src/lua/common/je_lua_function.cpp
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2018-11-12 21:58:05 +0800
committerchai <chaifix@163.com>2018-11-12 21:58:05 +0800
commitaf62f267a24091a16cbafe844d59cdbd4e78f5b1 (patch)
tree3862cee497b30a9c54761c7cd60c5de5af4a78d3 /src/lua/common/je_lua_function.cpp
parent72e45f0062d727cedd576d1e1251f6722454a119 (diff)
*使用int做状态机key
Diffstat (limited to 'src/lua/common/je_lua_function.cpp')
-rw-r--r--src/lua/common/je_lua_function.cpp45
1 files changed, 45 insertions, 0 deletions
diff --git a/src/lua/common/je_lua_function.cpp b/src/lua/common/je_lua_function.cpp
new file mode 100644
index 0000000..e202d99
--- /dev/null
+++ b/src/lua/common/je_lua_function.cpp
@@ -0,0 +1,45 @@
+#include "je_lua_function.h"
+
+namespace JinEngine
+{
+ namespace Lua
+ {
+
+ LuaFunc::LuaFunc(lua_State* L)
+ : mLuaFunc(nullptr)
+ , mParams(0)
+ , mL(L)
+ {
+ }
+
+ LuaFunc::~LuaFunc()
+ {
+ delete mLuaFunc;
+ for (auto p : mParams)
+ delete p;
+ }
+
+ void LuaFunc::setFunc(int i, uint nresults )
+ {
+ if (mLuaFunc != nullptr)
+ delete mLuaFunc;
+ mLuaFunc = new LuaRef(mL, i);
+ mNResults = nresults;
+ }
+
+ void LuaFunc::pushParam(int i)
+ {
+ mParams.push_back(new LuaRef(mL, i));
+ }
+
+ uint LuaFunc::call()
+ {
+ mLuaFunc->push();
+ for (auto p : mParams)
+ p->push();
+ luax_call(mL, mParams.size(), mNResults);
+ return mNResults;
+ }
+
+ }
+} \ No newline at end of file