summaryrefslogtreecommitdiff
path: root/Runtime/Lua
diff options
context:
space:
mode:
Diffstat (limited to 'Runtime/Lua')
-rw-r--r--Runtime/Lua/LuaBind/LuaBindRef.cpp16
-rw-r--r--Runtime/Lua/LuaBind/LuaBindRef.h10
-rw-r--r--Runtime/Lua/LuaBind/LuaBindState.h6
-rw-r--r--Runtime/Lua/LuaBind/LuaBindUtility.h8
-rw-r--r--Runtime/Lua/LuaBind/LuaBindVM.cpp5
-rw-r--r--Runtime/Lua/LuaHelper.cpp8
-rw-r--r--Runtime/Lua/LuaHelper.h2
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: