From e12b7da27fb16f7ee3d6f70b9ff37b77ae106151 Mon Sep 17 00:00:00 2001 From: Lion Kortlepel Date: Mon, 16 Nov 2020 16:48:00 +0100 Subject: [PATCH] lua unique_ptr to shared_ptr --- include/Lua/LuaSystem.hpp | 4 ++-- src/Lua/LuaSystem.cpp | 24 ++++++++++++------------ 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/include/Lua/LuaSystem.hpp b/include/Lua/LuaSystem.hpp index 526d4e6..68dfe13 100644 --- a/include/Lua/LuaSystem.hpp +++ b/include/Lua/LuaSystem.hpp @@ -72,6 +72,6 @@ public: void SetStopThread(bool StopThread) { _StopThread = StopThread; } bool GetStopThread() const { return _StopThread; } }; -int CallFunction(Lua* lua, const std::string& FuncName, std::unique_ptr args); -int TriggerLuaEvent(const std::string& Event, bool local, Lua* Caller, std::unique_ptr arg, bool Wait); +int CallFunction(Lua* lua, const std::string& FuncName, std::shared_ptr args); +int TriggerLuaEvent(const std::string& Event, bool local, Lua* Caller, std::shared_ptr arg, bool Wait); extern std::set> PluginEngine; diff --git a/src/Lua/LuaSystem.cpp b/src/Lua/LuaSystem.cpp index 2b89d9b..93f298f 100644 --- a/src/Lua/LuaSystem.cpp +++ b/src/Lua/LuaSystem.cpp @@ -14,10 +14,10 @@ #include #include -std::unique_ptr CreateArg(lua_State* L, int T, int S) { +std::shared_ptr CreateArg(lua_State* L, int T, int S) { if (S > T) return nullptr; - std::unique_ptr temp(new LuaArg); + std::shared_ptr temp(new LuaArg); for (int C = S; C <= T; C++) { if (lua_isstring(L, C)) { temp->args.emplace_back(std::string(lua_tostring(L, C))); @@ -53,11 +53,11 @@ void SendError(lua_State* L, const std::string& msg) { } warn(a + Sec(" | Incorrect Call of ") + msg); } -int Trigger(Lua* lua, const std::string& R, std::unique_ptr arg) { +int Trigger(Lua* lua, const std::string& R, std::shared_ptr arg) { std::lock_guard lockGuard(lua->Lock); - std::packaged_task)> task([lua, R](std::unique_ptr arg) { return CallFunction(lua, R, std::move(arg)); }); + std::packaged_task)> task([lua, R](std::shared_ptr arg) { return CallFunction(lua, R, arg); }); std::future f1 = task.get_future(); - std::thread t(std::move(task), std::move(arg)); + std::thread t(std::move(task), arg); t.detach(); auto status = f1.wait_for(std::chrono::seconds(5)); if (status != std::future_status::timeout) @@ -65,11 +65,11 @@ int Trigger(Lua* lua, const std::string& R, std::unique_ptr arg) { SendError(lua->GetState(), R + " took too long to respond"); return 0; } -int FutureWait(Lua* lua, const std::string& R, std::unique_ptr arg, bool Wait) { +int FutureWait(Lua* lua, const std::string& R, std::shared_ptr arg, bool Wait) { Assert(lua); - std::packaged_task)> task([lua, R](std::unique_ptr arg) { return Trigger(lua, R, std::move(arg)); }); + std::packaged_task)> task([lua, R](std::shared_ptr arg) { return Trigger(lua, R, arg); }); std::future f1 = task.get_future(); - std::thread t(std::move(task), std::move(arg)); + std::thread t(std::move(task), arg); t.detach(); int T = 0; if (Wait) @@ -79,16 +79,16 @@ int FutureWait(Lua* lua, const std::string& R, std::unique_ptr arg, bool return f1.get(); return 0; } -int TriggerLuaEvent(const std::string& Event, bool local, Lua* Caller, std::unique_ptr arg, bool Wait) { +int TriggerLuaEvent(const std::string& Event, bool local, Lua* Caller, std::shared_ptr arg, bool Wait) { int R = 0; for (auto& Script : PluginEngine) { if (Script->IsRegistered(Event)) { if (local) { if (Script->GetPluginName() == Caller->GetPluginName()) { - R += FutureWait(Script.get(), Script->GetRegistered(Event), std::move(arg), Wait); + R += FutureWait(Script.get(), Script->GetRegistered(Event), arg, Wait); } } else - R += FutureWait(Script.get(), Script->GetRegistered(Event), std::move(arg), Wait); + R += FutureWait(Script.get(), Script->GetRegistered(Event), arg, Wait); } } return R; @@ -563,7 +563,7 @@ std::string Lua::GetOrigin() { return fs::path(GetFileName()).filename().string(); } -int CallFunction(Lua* lua, const std::string& FuncName, std::unique_ptr Arg) { +int CallFunction(Lua* lua, const std::string& FuncName, std::shared_ptr Arg) { lua_State* luaState = lua->GetState(); lua_getglobal(luaState, FuncName.c_str()); if (lua_isfunction(luaState, -1)) {