From 40fc27154fe754181934dc7ee31375e6bdfb33fc Mon Sep 17 00:00:00 2001 From: chai Date: Tue, 23 Oct 2018 12:23:58 +0800 Subject: *merge from minimal --- src/lua/common/Proxy.h | 79 +++++++++++++++++++++++++++++++------------------- 1 file changed, 49 insertions(+), 30 deletions(-) (limited to 'src/lua/common/Proxy.h') diff --git a/src/lua/common/Proxy.h b/src/lua/common/Proxy.h index 8323ead..5ebb5b2 100644 --- a/src/lua/common/Proxy.h +++ b/src/lua/common/Proxy.h @@ -3,46 +3,65 @@ #include "Reference.hpp" -namespace jin +namespace JinEngine { -namespace lua -{ - - class Proxy + namespace Lua { - public: - void bind(RefBase* ref) - { - if (ref == nullptr) - return; - reference = ref; - } - void release() + class Proxy { - if (reference != nullptr) + public: + void bind(RefBase* ref) { - reference->release(); - reference = nullptr; + if (ref == nullptr) + return; + reference = ref; } - } - template - Ref& getRef() - { - return *(Ref*) reference; - } + void release() + { + if (reference != nullptr) + { + reference->release(); + reference = nullptr; + } + } - const char* getObjectType() - { - return reference->type; - } + void retain() + { + if (reference != nullptr) + reference->retain(); + } + + void setUserdata(void* data) + { + if (reference != nullptr) + reference->setUserdata(data); + } + + template + Ref& getRef() + { + return *(Ref*) reference; + } + + template + T* getObject() + { + Ref& ref = getRef(); + return ref.getObject(); + } + + const char* getObjectType() + { + return reference->type; + } - RefBase* reference; + RefBase* reference; - }; + }; -} // lua -} // jin + } // namespace Lua +} // namespace JinEngine #endif // __JIN_COMMON_PROXY_H \ No newline at end of file -- cgit v1.1-26-g67d0