summaryrefslogtreecommitdiff
path: root/source/3rd-party/Luax/luax_ref.h
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2019-03-19 23:06:27 +0800
committerchai <chaifix@163.com>2019-03-19 23:06:27 +0800
commit1497dccd63a84b7ee2b229b1ad9c5c02718f2a78 (patch)
treef8d1bff50da13e126d08c7345653e002e293202d /source/3rd-party/Luax/luax_ref.h
parent5e2a973516e0729b225da9de0b03015dc5854ac4 (diff)
*rename
Diffstat (limited to 'source/3rd-party/Luax/luax_ref.h')
-rw-r--r--source/3rd-party/Luax/luax_ref.h62
1 files changed, 62 insertions, 0 deletions
diff --git a/source/3rd-party/Luax/luax_ref.h b/source/3rd-party/Luax/luax_ref.h
new file mode 100644
index 0000000..b7aabe5
--- /dev/null
+++ b/source/3rd-party/Luax/luax_ref.h
@@ -0,0 +1,62 @@
+#ifndef __LUAX_REF_H__
+#define __LUAX_REF_H__
+
+#include "luax_config.h"
+#include "luax_state.h"
+
+namespace Luax
+{
+
+ ///
+ /// ãLUA_REGISTRYINDEX
+ ///
+ class LuaxRef
+ {
+ public:
+
+ enum
+ {
+ STRONG_REF,
+ WEAK_REF
+ };
+
+ LuaxRef(int mode = STRONG_REF);
+ virtual ~LuaxRef();
+
+ operator bool();
+
+ void SetRef(LuaxState& state, int idx);
+ bool PushRef(LuaxState& state);
+
+ int GetRefID();
+
+ private:
+
+ int mRefID; // luaL_ref
+ int mMode; // strong or weak
+
+ };
+
+ ///
+ /// ǿãLUA_REGISTRYINDEX["_LUAX_STRONGREF_TABLE"]֤lua objectᱻա
+ ///
+ class LuaxStrongRef: public LuaxRef
+ {
+ public:
+ LuaxStrongRef();
+
+ };
+
+ ///
+ /// ãLUA_REGISTRYINDEX["_LUAX_WEAKREF_TABLE"]Ӱlua objectĻգֻΪһȡlua objectӳ䡣
+ ///
+ class LuaxWeakRef : public LuaxRef
+ {
+ public:
+ LuaxWeakRef();
+
+ };
+
+}
+
+#endif \ No newline at end of file