aboutsummaryrefslogtreecommitdiff
path: root/src/lua/common/je_lua_proxy.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/lua/common/je_lua_proxy.h')
-rw-r--r--src/lua/common/je_lua_proxy.h37
1 files changed, 22 insertions, 15 deletions
diff --git a/src/lua/common/je_lua_proxy.h b/src/lua/common/je_lua_proxy.h
index 56e5fee..b476aa6 100644
--- a/src/lua/common/je_lua_proxy.h
+++ b/src/lua/common/je_lua_proxy.h
@@ -1,6 +1,8 @@
#ifndef __JIN_COMMON_PROXY_H
#define __JIN_COMMON_PROXY_H
+#include "../luax.h"
+
#include "je_lua_shared.hpp"
namespace JinEngine
@@ -11,56 +13,61 @@ namespace JinEngine
class Proxy
{
public:
- void bind(SharedBase* ref)
+ void bind(SharedBase* shared)
{
- if (ref == nullptr)
+ if (shared == nullptr)
return;
- shared = ref;
+ reference = shared;
}
void release()
{
- if (shared != nullptr)
+ if (reference != nullptr)
{
- shared->release();
- shared = nullptr;
+ reference->release();
+ reference = nullptr;
}
}
void retain()
{
- if (shared != nullptr)
- shared->retain();
+ if (reference != nullptr)
+ reference->retain();
}
void setUserdata(void* data)
{
- if (shared != nullptr)
- shared->setUserdata(data);
+ if (reference != nullptr)
+ reference->setUserdata(data);
}
template<class T>
Shared<T>& getShared()
{
- return *(static_cast<Shared<T>*>(shared));
+ return *(Shared<T>*) reference;
}
template<class T>
T* getObject()
{
- Shared<T>& ref = getShared<T>();
- return ref.getObject();
+ Shared<T>& shared = getShared<T>();
+ return shared.getObject();
}
const char* getObjectType()
{
- return shared->type;
+ return reference->type;
}
- SharedBase* shared;
+ SharedBase* reference;
};
+ inline Proxy* luax_newinstance(lua_State* L, const char* type)
+ {
+ return static_cast<Proxy*>(luax_newinstance(L, type, sizeof(Proxy)));
+ }
+
} // namespace Lua
} // namespace JinEngine