From e257f98dbf5c0064037b966a353e0eb1ffcba0a8 Mon Sep 17 00:00:00 2001 From: chai Date: Fri, 17 Aug 2018 07:50:10 +0800 Subject: *update --- src/lua/luaopen_types.h | 77 +++++++++++++++++++------------------------------ 1 file changed, 29 insertions(+), 48 deletions(-) (limited to 'src/lua/luaopen_types.h') diff --git a/src/lua/luaopen_types.h b/src/lua/luaopen_types.h index 78083c6..47eb3be 100644 --- a/src/lua/luaopen_types.h +++ b/src/lua/luaopen_types.h @@ -22,58 +22,39 @@ namespace jin namespace lua { - class Reference - { - public: - - Reference(void* obj) - : count(1) - , object(obj) - { - } - void retain() - { - ++count; - } - void release() - { - if (--count <= 0) - delete this; - } - - protected: - Reference(const Reference&); - virtual ~Reference() - { - } - void* object; - int count; + class Reference + { + public: + Reference(void* obj) + : count(1) + , object(obj) + { + } - }; + void retain() + { + ++count; + } - template - class Ref : public Reference - { - public: - Ref(T* obj) - : Reference(obj) - { - } - ~Ref() - { - T* obj = (T*)object; - delete obj; - } - T* operator->() + void release() { - return (T*)object; + if (--count <= 0) + delete this; } + + template T* getObject() { return (T*)object; } + private: - Ref(const Ref& ref); + Reference(const Reference&); + virtual ~Reference() {} + + void* object; + int count; + }; class Proxy @@ -97,11 +78,11 @@ namespace lua } } - template - Ref& getRef() - { - return *(Ref*) reference; - } + template + T* getObject() + { + return reference->getObject(); + } const char* type; // type name and metatable name Reference* reference; // acctual object binded -- cgit v1.1-26-g67d0