From 75792c15480d3d99b2ba7e79e143e4b569b22611 Mon Sep 17 00:00:00 2001 From: chai Date: Tue, 13 Nov 2018 08:27:26 +0800 Subject: =?UTF-8?q?*=E4=BF=AE=E6=94=B9lua=20ref?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/lua/common/je_lua_callback.cpp | 43 ++++++++++++++++++++++++ src/lua/common/je_lua_callback.h | 67 ++++++++++++++++++++++++++++++++++++++ src/lua/common/je_lua_function.cpp | 45 ------------------------- src/lua/common/je_lua_function.h | 46 -------------------------- src/lua/common/je_lua_reference.h | 17 ++++++++++ src/lua/common/je_lua_shared.hpp | 8 ++--- 6 files changed, 131 insertions(+), 95 deletions(-) create mode 100644 src/lua/common/je_lua_callback.cpp create mode 100644 src/lua/common/je_lua_callback.h delete mode 100644 src/lua/common/je_lua_function.cpp delete mode 100644 src/lua/common/je_lua_function.h (limited to 'src/lua/common') diff --git a/src/lua/common/je_lua_callback.cpp b/src/lua/common/je_lua_callback.cpp new file mode 100644 index 0000000..392f919 --- /dev/null +++ b/src/lua/common/je_lua_callback.cpp @@ -0,0 +1,43 @@ +#include "je_lua_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); + } + + } +} \ No newline at end of file diff --git a/src/lua/common/je_lua_callback.h b/src/lua/common/je_lua_callback.h new file mode 100644 index 0000000..f3301fc --- /dev/null +++ b/src/lua/common/je_lua_callback.h @@ -0,0 +1,67 @@ +#ifndef __JIN_COMMON_FUNCTION_H +#define __JIN_COMMON_FUNCTION_H + +#include + +#include "libjin/jin.h" +#include "../luax.h" +#include "je_lua_reference.h" + +namespace JinEngine +{ + namespace Lua + { + + /// + /// + /// + class LuaCallback + { + public: + /// + /// + /// + LuaCallback(lua_State* L); + + /// + /// + /// + ~LuaCallback(); + + /// + /// + /// + void setFunc(int i); + + /// + /// + /// + void pushParam(int i); + + /// + /// + /// + void call(); + + private: + /// + /// + /// + LuaRef* mLuaFunc; + + /// + /// + /// + std::vector mParams; + + /// + /// + /// + lua_State* const mL; + + }; + + } // namespace Lua +} // namespace JinEngine + +#endif // __JIN_COMMON_REFERENCE_H \ No newline at end of file diff --git a/src/lua/common/je_lua_function.cpp b/src/lua/common/je_lua_function.cpp deleted file mode 100644 index e202d99..0000000 --- a/src/lua/common/je_lua_function.cpp +++ /dev/null @@ -1,45 +0,0 @@ -#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 diff --git a/src/lua/common/je_lua_function.h b/src/lua/common/je_lua_function.h deleted file mode 100644 index a2d5ccc..0000000 --- a/src/lua/common/je_lua_function.h +++ /dev/null @@ -1,46 +0,0 @@ -#ifndef __JIN_COMMON_FUNCTION_H -#define __JIN_COMMON_FUNCTION_H - -#include - -#include "libjin/jin.h" -#include "../luax.h" -#include "je_lua_reference.h" - -namespace JinEngine -{ - namespace Lua - { - - class LuaFunc - { - public: - LuaFunc(lua_State* L); - ~LuaFunc(); - - /// - /// - /// - void setFunc(int i, uint nresults); - - /// - /// - /// - void pushParam(int i); - - /// - /// - /// - uint call(); - - private: - LuaRef* mLuaFunc; - std::vector mParams; - lua_State* mL; - uint mNResults; - }; - - } // namespace Lua -} // namespace JinEngine - -#endif // __JIN_COMMON_REFERENCE_H \ No newline at end of file diff --git a/src/lua/common/je_lua_reference.h b/src/lua/common/je_lua_reference.h index d2d077f..f338762 100644 --- a/src/lua/common/je_lua_reference.h +++ b/src/lua/common/je_lua_reference.h @@ -15,9 +15,19 @@ namespace JinEngine class LuaRef { public: + /// + /// + /// LuaRef(lua_State* L, int i); + + /// + /// + /// ~LuaRef(); + /// + /// + /// void unref(); /// @@ -26,7 +36,14 @@ namespace JinEngine void push(); private: + /// + /// + /// lua_State* const mL; + + /// + /// + /// int mIndex; }; diff --git a/src/lua/common/je_lua_shared.hpp b/src/lua/common/je_lua_shared.hpp index 7ac8923..876fe28 100644 --- a/src/lua/common/je_lua_shared.hpp +++ b/src/lua/common/je_lua_shared.hpp @@ -6,7 +6,7 @@ namespace JinEngine namespace Lua { - /*abstract*/class SharedBase + class SharedBase { public: void retain() @@ -20,7 +20,7 @@ namespace JinEngine delete this; } - // object type string + // Object type string. const char* const type; void setUserdata(void* data) @@ -63,12 +63,12 @@ namespace JinEngine T* operator->() { - return (T*)object; + return static_cast(object); } T* getObject() { - return (T*)object; + return static_cast(object); } private: -- cgit v1.1-26-g67d0