diff options
Diffstat (limited to 'Runtime/Lua/LuaBind/LuaBindRef.h')
-rw-r--r-- | Runtime/Lua/LuaBind/LuaBindRef.h | 25 |
1 files changed, 12 insertions, 13 deletions
diff --git a/Runtime/Lua/LuaBind/LuaBindRef.h b/Runtime/Lua/LuaBind/LuaBindRef.h index 93b30be..7058094 100644 --- a/Runtime/Lua/LuaBind/LuaBindRef.h +++ b/Runtime/Lua/LuaBind/LuaBindRef.h @@ -7,9 +7,7 @@ namespace LuaBind { - // - // 引用,存在LUA_REGISTRYINDEX下面的两个表里 - // + // 全局引用,保存在LUA_REGISTRYINDEX下面的两个表里 class Ref { public: @@ -20,26 +18,29 @@ namespace LuaBind WEAK_REF }; - Ref(int mode = STRONG_REF); + Ref(RefMode mode = STRONG_REF); virtual ~Ref(); operator bool(); + // 将栈上的对象添加到全局引用表中 void SetRef(State& state, int idx); + + // 将引用的对象压入栈 bool PushRef(State& state); - int GetRefID(); + int GetRefID() { return mRefID; } + + RefMode GetRefMode() { return mMode; } private: - int mRefID; // luaL_ref - int mMode; // strong or weak + int mRefID; + RefMode mMode; }; - // - // 强引用,在LUA_REGISTRYINDEX["_LUA_BIND_STRONGREF_TABLE"]里,保证lua object不会被回收。 - // + // 强引用,在LUA_REGISTRYINDEX["GAMELAB_UNIVERSAL_STRONG_REFERENCE_TABLE"]里,保证lua object不会被回收 class StrongRef: public Ref { public: @@ -47,9 +48,7 @@ namespace LuaBind }; - // - // 弱引用,在LUA_REGISTRYINDEX["_LUA_BIND_WEAKREF_TABLE"]里,不影响lua object的回收,只是作为一个方便取lua object的映射。 - // + // 弱引用,在LUA_REGISTRYINDEX["GAMELAB_UNIVERSAL_WEAK_REFERENCE_TABLE"]里,不影响lua object的回收,只是作为一个方便取lua object的映射 class WeakRef : public Ref { public: |