diff options
author | chai <chaifix@163.com> | 2021-11-19 15:33:48 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2021-11-19 15:33:48 +0800 |
commit | 1cd31d14c95f9d52e30fbc611df5da4b46f048d9 (patch) | |
tree | 86dbda850f9b8ed26b152c6521adc0a777d6563a /Runtime/Lua/LuaBind | |
parent | 2ab7fad7b308debba0aacbf76831569f360d19a0 (diff) |
*misc
Diffstat (limited to 'Runtime/Lua/LuaBind')
-rw-r--r-- | Runtime/Lua/LuaBind/LuaBindInvoker.h | 6 | ||||
-rw-r--r-- | Runtime/Lua/LuaBind/LuaBindLClass.h | 12 | ||||
-rw-r--r-- | Runtime/Lua/LuaBind/LuaBindState.h | 4 |
3 files changed, 22 insertions, 0 deletions
diff --git a/Runtime/Lua/LuaBind/LuaBindInvoker.h b/Runtime/Lua/LuaBind/LuaBindInvoker.h index 5f24b15..cbfb2f9 100644 --- a/Runtime/Lua/LuaBind/LuaBindInvoker.h +++ b/Runtime/Lua/LuaBind/LuaBindInvoker.h @@ -59,6 +59,12 @@ namespace LuaBind udata.PushUserdata(state); ++argc; } + template<class T> + void AddLuaObject(T& obj) { + //LuaObjectTransfer::CastToLuaObject<T>(state, obj); + obj.CastToLuaObject(state); + ++argc; + } void Invoke(int nReturns = 0); diff --git a/Runtime/Lua/LuaBind/LuaBindLClass.h b/Runtime/Lua/LuaBind/LuaBindLClass.h index 296d6a1..538941e 100644 --- a/Runtime/Lua/LuaBind/LuaBindLClass.h +++ b/Runtime/Lua/LuaBind/LuaBindLClass.h @@ -14,4 +14,16 @@ namespace LuaBind };
+ class LuaObjectTransfer
+ {
+ public:
+ // �����ػ���Щ����
+ template <class T>
+ static void CastToLuaObject(State&, T& in);
+
+ template <class T>
+ static void RestoreFromLuaObject(State& state, int index, T& out);
+
+ };
+
}
diff --git a/Runtime/Lua/LuaBind/LuaBindState.h b/Runtime/Lua/LuaBind/LuaBindState.h index e8ac42d..680f6e2 100644 --- a/Runtime/Lua/LuaBind/LuaBindState.h +++ b/Runtime/Lua/LuaBind/LuaBindState.h @@ -104,6 +104,10 @@ namespace LuaBind bool HasField(int idx, int name, int type); bool HasKeys(int idx); + template <class T> + void PushLuaObject(const T& obj) { + obj.CastToLuaObject(*this); + } void PushLuaObject(const ILuaClass& lc); void PushTable(const INativeTable& tb); void PushNil(); |