aboutsummaryrefslogtreecommitdiff
path: root/src/lua/modules/thread/je_lua_thread.cpp
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2018-12-08 22:05:31 +0800
committerchai <chaifix@163.com>2018-12-08 22:05:31 +0800
commita16ce94158c9cf22a19c0e73dfe2e992a8302af1 (patch)
tree52d80d950cd410ba82af909e18f77e3b11cd6eda /src/lua/modules/thread/je_lua_thread.cpp
parentd34e5c9d7c6135e805f2cc231411cdcc9910190c (diff)
*去除shared template
Diffstat (limited to 'src/lua/modules/thread/je_lua_thread.cpp')
-rw-r--r--src/lua/modules/thread/je_lua_thread.cpp33
1 files changed, 16 insertions, 17 deletions
diff --git a/src/lua/modules/thread/je_lua_thread.cpp b/src/lua/modules/thread/je_lua_thread.cpp
index 566d0ff..35bf876 100644
--- a/src/lua/modules/thread/je_lua_thread.cpp
+++ b/src/lua/modules/thread/je_lua_thread.cpp
@@ -12,26 +12,25 @@ namespace JinEngine
const char* Jin_Lua_Thread = "Thread";
- typedef Shared<Thread>& SharedThread;
-
int luaopen_thread(lua_State* L);
- static inline SharedThread checkThread(lua_State* L)
+ static inline Thread* checkThread(lua_State* L)
{
LuaObject* luaObj = (LuaObject*)luax_checktype(L, 1, Jin_Lua_Thread);
- return luaObj->getShared<Thread>();
+ return luaObj->getObject<Thread>();
}
LUA_IMPLEMENT int threadRunner(void* t)
{
- SharedThread shared = *(Shared<Thread>*)t;
+ Shared* shared = (Shared*)t;
+ Thread* thread = shared->getObject<Thread>();
lua_State* L = lua_open();
luax_openlibs(L);
open(L);
luax_getglobal(L, MODULE_NAME);
- LuaObject* luaObj = luax_newinstance(L, Jin_Lua_Thread, &shared);
+ LuaObject* luaObj = luax_newinstance(L, Jin_Lua_Thread, shared);
luax_setfield(L, -2, "_curThread");
- luax_dostring(L, shared->code.c_str());
+ luax_dostring(L, thread->code.c_str());
luax_close(L);
return 0;
}
@@ -45,7 +44,7 @@ namespace JinEngine
LUA_IMPLEMENT int l_start(lua_State* L)
{
- SharedThread shared = checkThread(L);
+ Thread* shared = checkThread(L);
bool result = shared->start(&shared);
luax_pushboolean(L, result);
return 1;
@@ -53,14 +52,14 @@ namespace JinEngine
LUA_IMPLEMENT int l_wait(lua_State* L)
{
- SharedThread shared = checkThread(L);
+ Thread* shared = checkThread(L);
shared->wait();
return 0;
}
LUA_IMPLEMENT int l_send(lua_State* L)
{
- SharedThread shared = checkThread(L);
+ Thread* shared = checkThread(L);
int slot = luax_checkinteger(L, 2);
const int vp = 3;
if (luax_isnumberstrict(L, vp))
@@ -93,7 +92,7 @@ namespace JinEngine
LUA_IMPLEMENT int l_receive(lua_State* L)
{
- SharedThread shared = checkThread(L);
+ Thread* shared = checkThread(L);
int slot = luax_checkinteger(L, 2);
bool result = shared->receive(slot);
luax_pushboolean(L, result);
@@ -102,7 +101,7 @@ namespace JinEngine
LUA_IMPLEMENT int l_fetch(lua_State* L)
{
- SharedThread shared = checkThread(L);
+ Thread* shared = checkThread(L);
int slot = luax_checkinteger(L, 2);
Thread::Variant v = shared->fetch(slot);
switch (v.type)
@@ -135,7 +134,7 @@ namespace JinEngine
LUA_IMPLEMENT int l_demand(lua_State* L)
{
- SharedThread shared = checkThread(L);
+ Thread* shared = checkThread(L);
int slot = luax_checkinteger(L, 2);
Thread::Variant v = shared->demand(slot);
switch (v.type)
@@ -168,7 +167,7 @@ namespace JinEngine
LUA_IMPLEMENT int l_remove(lua_State* L)
{
- SharedThread shared = checkThread(L);
+ Thread* shared = checkThread(L);
int slot = luax_checkinteger(L, 2);
shared->remove(slot);
return 0;
@@ -176,7 +175,7 @@ namespace JinEngine
LUA_IMPLEMENT int l_getName(lua_State* L)
{
- SharedThread shared = checkThread(L);
+ Thread* shared = checkThread(L);
const char* name = shared->getName();
luax_pushstring(L, name);
return 1;
@@ -184,7 +183,7 @@ namespace JinEngine
LUA_IMPLEMENT int l_isRunning(lua_State* L)
{
- SharedThread shared = checkThread(L);
+ Thread* shared = checkThread(L);
bool running = shared->isRunning();
luax_pushboolean(L, running);
return 1;
@@ -214,7 +213,7 @@ namespace JinEngine
const char* name = luax_checkstring(L, 1);
const char* code = luax_checkstring(L, 2);
Thread* thread = new Thread(name, code, threadRunner);
- LuaObject* luaObj = luax_newinstance(L, Jin_Lua_Thread, new Shared<Thread>(thread, Jin_Lua_Thread));
+ LuaObject* luaObj = luax_newinstance(L, Jin_Lua_Thread, new Shared(thread, Jin_Lua_Thread));
return 1;
}