From 1cd31d14c95f9d52e30fbc611df5da4b46f048d9 Mon Sep 17 00:00:00 2001 From: chai Date: Fri, 19 Nov 2021 15:33:48 +0800 Subject: *misc --- Runtime/Lua/LuaBind/LuaBindInvoker.h | 6 ++++++ Runtime/Lua/LuaBind/LuaBindLClass.h | 12 ++++++++++++ Runtime/Lua/LuaBind/LuaBindState.h | 4 ++++ 3 files changed, 22 insertions(+) (limited to 'Runtime/Lua/LuaBind') 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 + void AddLuaObject(T& obj) { + //LuaObjectTransfer::CastToLuaObject(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 + static void CastToLuaObject(State&, T& in); + + template + 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 + void PushLuaObject(const T& obj) { + obj.CastToLuaObject(*this); + } void PushLuaObject(const ILuaClass& lc); void PushTable(const INativeTable& tb); void PushNil(); -- cgit v1.1-26-g67d0