summaryrefslogtreecommitdiff
path: root/Runtime/Scripting/LuaBindClass.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'Runtime/Scripting/LuaBindClass.hpp')
-rw-r--r--Runtime/Scripting/LuaBindClass.hpp78
1 files changed, 39 insertions, 39 deletions
diff --git a/Runtime/Scripting/LuaBindClass.hpp b/Runtime/Scripting/LuaBindClass.hpp
index c7cfca5..90c421d 100644
--- a/Runtime/Scripting/LuaBindClass.hpp
+++ b/Runtime/Scripting/LuaBindClass.hpp
@@ -18,33 +18,33 @@
namespace LuaBind
{
- class LuaBindVM;
+ class VM;
///
/// 虚基类,为了实现多态。需要访问下面这些接口的外部基类需要虚继承此类,之后再派生链中就会
- /// 调用对应实体的方法。注意继承此类时不能实现下面的方法,实现在LuaBindNativeClass中,实现会
+ /// 调用对应实体的方法。注意继承此类时不能实现下面的方法,实现在NativeClass中,实现会
/// 导致二义性。
///
/// 依据Effective C++条款40,如果在必须使用virtual base基类情况下,应该尽可能避免向其中放
/// 置数据成员,规避数据成员初始化造成的一些隐性问题。依据这一点,vpb基类更加接近C#和Java中
/// 的Interface。所以,在这里把类用I开头标识这是一个接口。
///
- class LuaBindObject
+ class Object
{
public:
- LuaBindObject() {};
- virtual ~LuaBindObject() {};
+ Object() {};
+ virtual ~Object() {};
///
/// 成员引用管理,在实例的ref table里。设置、取、清除。
///
- virtual bool PushLuaBindMemberRef(LuaBindState& state, int refID) = 0;
- virtual bool PushLuaBindUserdata(LuaBindState& state) = 0;
- virtual bool PushLuaBindMemberTable(LuaBindState& state) = 0;
- virtual bool PushLuaBindRefTable(LuaBindState& state) = 0;
+ virtual bool PushMemberRef(State& state, int refID) = 0;
+ virtual bool PushUserdata(State& state) = 0;
+ virtual bool PushMemberTable(State& state) = 0;
+ virtual bool PushRefTable(State& state) = 0;
///
- /// 被LuaBindNativeClass实现。保持和释放native资源。
+ /// 被NativeClass实现。保持和释放native资源。
///
virtual void Retain() = 0;
virtual void Release() = 0;
@@ -52,7 +52,7 @@ namespace LuaBind
};
// TODO: 将公共部分提取出来,不要重复生成代码
- //class LuaBindNativeClassBase
+ //class NativeClassBase
//{
//}
@@ -60,8 +60,8 @@ namespace LuaBind
/// 需要暴露给lua的native class需要继承此类。通过lua管理的实例要确保引用计数的正确性,在多个线程中需要确
/// 定不会误释放。
///
- template<class TYPE, class BASE = LuaBindObject>
- class LuaBindNativeClass : public BASE
+ template<class TYPE, class BASE = Object>
+ class NativeClass : public BASE
{
public:
@@ -70,24 +70,24 @@ namespace LuaBind
/// 相比较member ref,这个用在实体会被多次被不同其他实体引用的情况,并频繁销毁这些实体,
/// 避免lua频繁的调用gc检测。
///
- template<class DATATYPE> void LuaBindRetain(LuaBindState& state, DATATYPE* userdata);
+ template<class DATATYPE> void Retain(State& state, DATATYPE* userdata);
///
/// 对userdata减少一个引用在ref table里,以尝试回收userdata。
///
- template<class DATATYPE> void LuaBindRelease(LuaBindState& state, DATATYPE* userdata);
+ template<class DATATYPE> void Release(State& state, DATATYPE* userdata);
///
/// 将userdata push到栈顶,如果没有初始化mUserdata,初始化设置好元表并把初始化好的
/// userdata留在栈顶。并添加一个引用。这是一个将native对象所有权移交给lua控制的方法。
///
- bool PushLuaBindMemberRef(LuaBindState& state, int refID) override;
- bool PushLuaBindUserdata(LuaBindState& state) override;
- bool PushLuaBindMemberTable(LuaBindState& state) override;
- bool PushLuaBindRefTable(LuaBindState& state) override;
+ bool PushMemberRef(State& state, int refID) override;
+ bool PushUserdata(State& state) override;
+ bool PushMemberTable(State& state) override;
+ bool PushRefTable(State& state) override;
///
- /// Watch dog 添加一个native引用。luaVM引用不会提供外部接口。继承此类的派生类不能直接使用
+ /// WatchDog添加一个native引用。luaVM引用不会提供外部接口。继承此类的派生类不能直接使用
/// delete方法,应该使用Release释放。一般情况下这个操作由虚拟机__gc进行,但是允许用户
/// 程序在native中隔绝虚拟机情况下释放,这种情况下要使用Release。
///
@@ -103,31 +103,31 @@ namespace LuaBind
protected:
- LuaBindNativeClass();
- virtual ~LuaBindNativeClass();
+ NativeClass();
+ virtual ~NativeClass();
///
/// 成员引用管理,在实例的ref table里。设置、取、清除
///
- void SetLuaBindMemberRef(LuaBindState& state, LuaBindMemberRef& memRef, int idx);
- bool PushLuaBindMemberRef(LuaBindState& state, LuaBindMemberRef& memRef);
- void ClearLuaBindMemberRef(LuaBindState& state, LuaBindMemberRef& memRef);
+ void SetMemberRef(State& state, MemberRef& memRef, int idx);
+ bool PushMemberRef(State& state, MemberRef& memRef);
+ void ClearMemberRef(State& state, MemberRef& memRef);
private:
- friend class LuaBindState;
+ friend class State;
- static void RegisterLuaBindClassShared(LuaBindState& state);
- static void RegisterLuaBindFactoryClass(LuaBindState& state);
- static void RegisterLuaBindSingletonClass(LuaBindState& state);
+ static void RegisterClassShared(State& state);
+ static void RegisterFactoryClass(State& state);
+ static void RegisterSingletonClass(State& state);
- static void SetLuaBindClassTableRef(LuaBindState& state, int idx);
- static void PushLuaBindClassTable(LuaBindState& state);
+ static void SetClassTableRef(State& state, int idx);
+ static void PushClassTable(State& state);
///
/// 创建userdata,绑定实例到state。
///
- void BindToLua(LuaBindState& state);
+ void BindToLua(State& state);
//------------------------------------------------------------------------------//
@@ -151,15 +151,15 @@ namespace LuaBind
///
/// class table,工厂和单例都有。
///
- static LuaBindStrongRef mClassTable;
+ static StrongRef mClassTable;
///
/// 如果类是单例,这个用来保存singleton的引用关系,以保证不会被回收类似普通类的ref table。
/// 单例的成员是全生命周期的,所以直接在_LUA_BIND_STRONGREF_TABLE。单例对userdata进行
- /// LuaBindRetain\LuaBindRelease和member ref操作时和工厂实例不同,是存在下面这个ref table里
+ /// Retain\Release和member ref操作时和工厂实例不同,是存在下面这个ref table里
/// 的,这个table在_LUA_BIND_STRONGREF_TABLE里。
///
- static LuaBindStrongRef mSingletonRefTable;
+ static StrongRef mSingletonRefTable;
///
/// 通过userdata可以拿到:
@@ -167,14 +167,14 @@ namespace LuaBind
/// 2: member table
/// 3: class table
///
- LuaBindWeakRef mUserdata;
+ WeakRef mUserdata;
/// 通过后才能删除
- LuaBindWatchDog mWatchDog;
+ WatchDog mWatchDog;
#if LUA_BIND_PROFILER
// 托管此对象的虚拟机
- std::unordered_set<LuaBindVM*> mRefVMs;
+ std::unordered_set<VM*> mRefVMs;
// 保险,此类的派生类不能在外部使用delete直接删除,而应该使用Release
bool mSafer;
#endif
@@ -185,7 +185,7 @@ namespace LuaBind
///
/// 纯lua类
///
- class LuaBindPlainClass
+ class PlainClass
{
public: