diff options
Diffstat (limited to 'Runtime/Lua')
-rw-r--r-- | Runtime/Lua/LuaBind/LuaBindRef.cpp | 16 | ||||
-rw-r--r-- | Runtime/Lua/LuaBind/LuaBindRef.h | 10 | ||||
-rw-r--r-- | Runtime/Lua/LuaBind/LuaBindState.h | 6 | ||||
-rw-r--r-- | Runtime/Lua/LuaBind/LuaBindUtility.h | 8 | ||||
-rw-r--r-- | Runtime/Lua/LuaBind/LuaBindVM.cpp | 5 | ||||
-rw-r--r-- | Runtime/Lua/LuaHelper.cpp | 8 | ||||
-rw-r--r-- | Runtime/Lua/LuaHelper.h | 2 |
7 files changed, 29 insertions, 26 deletions
diff --git a/Runtime/Lua/LuaBind/LuaBindRef.cpp b/Runtime/Lua/LuaBind/LuaBindRef.cpp index b2f8e1c..d0f2766 100644 --- a/Runtime/Lua/LuaBind/LuaBindRef.cpp +++ b/Runtime/Lua/LuaBind/LuaBindRef.cpp @@ -4,24 +4,24 @@ namespace LuaBind { - Ref::Ref(LuaBind::VM* vm, RefMode mode) + UniversalRef::UniversalRef(LuaBind::VM* vm, RefMode mode) : mRefID(LUA_NOREF) , mMode(mode) , mOwner(vm) { } - Ref::~Ref() + UniversalRef::~UniversalRef() { // 自动释放引用 } - Ref::operator bool() + UniversalRef::operator bool() { return (mRefID != LUA_NOREF); } - void Ref::UnRef() + void UniversalRef::UnRef() { if (mRefID == LUA_NOREF) return; @@ -41,7 +41,7 @@ namespace LuaBind } } - void Ref::SetRef(LuaBind::State& state, int idx) + void UniversalRef::SetRef(LuaBind::State& state, int idx) { assert(state.GetVM() == mOwner); @@ -59,7 +59,7 @@ namespace LuaBind } } - bool Ref::PushRef(LuaBind::State& state) + bool UniversalRef::PushRef(LuaBind::State& state) { assert(mRefID != LUA_NOREF); @@ -84,12 +84,12 @@ namespace LuaBind } StrongRef::StrongRef(LuaBind::VM* vm) - : Ref(vm, STRONG_REF) + : UniversalRef(vm, STRONG_REF) { } WeakRef::WeakRef(LuaBind::VM* vm) - : Ref(vm, WEAK_REF) + : UniversalRef(vm, WEAK_REF) { } diff --git a/Runtime/Lua/LuaBind/LuaBindRef.h b/Runtime/Lua/LuaBind/LuaBindRef.h index c7b7ab3..793559e 100644 --- a/Runtime/Lua/LuaBind/LuaBindRef.h +++ b/Runtime/Lua/LuaBind/LuaBindRef.h @@ -9,7 +9,7 @@ namespace LuaBind // 全局引用,保存在LUA_REGISTRYINDEX下面的两个表里,生命周期手动控制 // 如果要用局部引用,用MemberRef,会保存在UserData的RefTable里,生命周期和UserData一致 - class Ref + class UniversalRef { public: enum RefMode @@ -18,8 +18,8 @@ namespace LuaBind WEAK_REF }; - Ref(LuaBind::VM* vm, RefMode mode = STRONG_REF); - virtual ~Ref(); + UniversalRef(LuaBind::VM* vm, RefMode mode = STRONG_REF); + virtual ~UniversalRef(); operator bool(); @@ -43,7 +43,7 @@ namespace LuaBind }; // 强引用,在LUA_REGISTRYINDEX["GAMELAB_UNIVERSAL_STRONG_REFERENCE_TABLE"]里,保证lua object不会被回收 - class StrongRef: public Ref + class StrongRef: public UniversalRef { public: StrongRef(LuaBind::VM* vm); @@ -51,7 +51,7 @@ namespace LuaBind }; // 弱引用,在LUA_REGISTRYINDEX["GAMELAB_UNIVERSAL_WEAK_REFERENCE_TABLE"]里,不影响lua object的回收,只是作为一个方便取lua object的映射 - class WeakRef : public Ref + class WeakRef : public UniversalRef { public: WeakRef(LuaBind::VM* vm); diff --git a/Runtime/Lua/LuaBind/LuaBindState.h b/Runtime/Lua/LuaBind/LuaBindState.h index 60e05be..c81ba8c 100644 --- a/Runtime/Lua/LuaBind/LuaBindState.h +++ b/Runtime/Lua/LuaBind/LuaBindState.h @@ -227,9 +227,8 @@ namespace LuaBind //--------------------------------------------------------------------------------// - // 确保不安全的lua调用能够在调用之后返回到最初stack状态。 - class ScopedState - : public State + // RAII, 确保不安全的lua调用能够在调用之后返回到最初stack状态。 + class ScopedState : public State { public: ScopedState(lua_State* state) @@ -253,7 +252,6 @@ namespace LuaBind private: void* operator new(size_t); int mRestoreTop; - }; // 注册工厂,注册class table,以type name为键设置在名称空间上。在注册阶段不会设置元表,等到New方法调用的时候才会。 diff --git a/Runtime/Lua/LuaBind/LuaBindUtility.h b/Runtime/Lua/LuaBind/LuaBindUtility.h index 94f2e9c..7e6eb77 100644 --- a/Runtime/Lua/LuaBind/LuaBindUtility.h +++ b/Runtime/Lua/LuaBind/LuaBindUtility.h @@ -6,10 +6,10 @@ // RegisterClass 注册类的方法和成员,比如枚举、常量等到class table GetNativeClassName 获得工厂的类名, // 同时用来避免注册时错误注册为了singleton,通过编译时报错避免 #define LUA_BIND_DECL_CLASS(type, ...) \ - friend class ::State; \ - friend class ::NativeClass<type,##__VA_ARGS__>; \ - static void RegisterClass(::State&); \ - static void RegisterPostprocess(::State&); \ + friend class LuaBind::State; \ + friend class LuaBind::NativeClass<type,##__VA_ARGS__>; \ + static void RegisterClass(LuaBind::State&); \ + static void RegisterPostprocess(LuaBind::State&); \ static const char* GetNativeClassName() { return #type; };\ static const char* GetClassName() { return #type; }; diff --git a/Runtime/Lua/LuaBind/LuaBindVM.cpp b/Runtime/Lua/LuaBind/LuaBindVM.cpp index e454929..7a56013 100644 --- a/Runtime/Lua/LuaBind/LuaBindVM.cpp +++ b/Runtime/Lua/LuaBind/LuaBindVM.cpp @@ -62,7 +62,10 @@ namespace LuaBind void VM::SetCurThread(lua_State* cur) { - mCurThread = cur; + if (this) + { + mCurThread = cur; + } } lua_State* VM::GetCurThread() diff --git a/Runtime/Lua/LuaHelper.cpp b/Runtime/Lua/LuaHelper.cpp index 53bea3f..e458e28 100644 --- a/Runtime/Lua/LuaHelper.cpp +++ b/Runtime/Lua/LuaHelper.cpp @@ -3,9 +3,9 @@ using namespace LuaBind;
template <> -Rectf State::GetValue < Rectf >(int idx, const Rectf value)
+Rect State::GetValue < Rect >(int idx, const Rect value)
{
- Rectf rect;
+ Rect rect;
rect.x = GetField<float>(idx, 1, 0); rect.y = GetField<float>(idx, 2, 0); rect.width = GetField<float>(idx, 3, 0); @@ -14,9 +14,9 @@ Rectf State::GetValue < Rectf >(int idx, const Rectf value) }
template <> -Vector2f State::GetValue < Vector2f >(int idx, const Vector2f value)
+Vector2 State::GetValue < Vector2 >(int idx, const Vector2 value)
{
- Vector2f v2; + Vector2 v2; v2.x = GetField<float>(idx, 1, 0); v2.y = GetField<float>(idx, 2, 0); return v2;
diff --git a/Runtime/Lua/LuaHelper.h b/Runtime/Lua/LuaHelper.h index 4ab0d6a..10d9421 100644 --- a/Runtime/Lua/LuaHelper.h +++ b/Runtime/Lua/LuaHelper.h @@ -3,6 +3,8 @@ #include "Runtime/Math/Vector2.h"
#include "./LuaBind/LuaBind.h"
+// lua 5.1 doc: https://www.lua.org/manual/5.1/
+
class LuaHelper
{
public:
|