From a16ce94158c9cf22a19c0e73dfe2e992a8302af1 Mon Sep 17 00:00:00 2001 From: chai Date: Sat, 8 Dec 2018 22:05:31 +0800 Subject: =?UTF-8?q?*=E5=8E=BB=E9=99=A4shared=20template?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/lua/modules/thread/je_lua_thread.cpp | 33 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 17 deletions(-) (limited to 'src/lua/modules/thread/je_lua_thread.cpp') 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& 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(); + return luaObj->getObject(); } LUA_IMPLEMENT int threadRunner(void* t) { - SharedThread shared = *(Shared*)t; + Shared* shared = (Shared*)t; + Thread* thread = shared->getObject(); 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, Jin_Lua_Thread)); + LuaObject* luaObj = luax_newinstance(L, Jin_Lua_Thread, new Shared(thread, Jin_Lua_Thread)); return 1; } -- cgit v1.1-26-g67d0