diff options
author | chai <chaifix@163.com> | 2021-10-23 00:31:25 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2021-10-23 00:31:25 +0800 |
commit | df0444f85f9bf623cc886e1632e624ef20cb0f1b (patch) | |
tree | 4aff1454312540f137bb318349b48e58d9b06d80 /Runtime/Lua/LuaBind/LuaBindState.h | |
parent | 4dafefe46a72ba47468b13d011f8299055081b0f (diff) |
-member table
Diffstat (limited to 'Runtime/Lua/LuaBind/LuaBindState.h')
-rw-r--r-- | Runtime/Lua/LuaBind/LuaBindState.h | 31 |
1 files changed, 7 insertions, 24 deletions
diff --git a/Runtime/Lua/LuaBind/LuaBindState.h b/Runtime/Lua/LuaBind/LuaBindState.h index e5b8f6c..aa77c26 100644 --- a/Runtime/Lua/LuaBind/LuaBindState.h +++ b/Runtime/Lua/LuaBind/LuaBindState.h @@ -17,7 +17,7 @@ namespace LuaBind typedef void (*ErrorHandler) (cc8 * msg); typedef void(*OnRegisterClassHandler)(State&, int clsIdx, std::string clsName, std::string pkgName); - extern OnRegisterClassHandler onRegisterFactoryClass; + extern OnRegisterClassHandler onRegisterNativeClass; extern std::string g_NameSpace; // 对lua_State的代理,除了保存一个lua_State的引用不保存其他内容。一个实例的metatable如下: @@ -150,7 +150,7 @@ namespace LuaBind // 注册方法 // 注册工厂,适用于普通类,有New方法 - template<class TYPE> void RegisterFactory(); + template<class TYPE> void RegisterNativeClass(); // 注册枚举 void RegisterEnum(cc8* name, Enum* enums); @@ -169,16 +169,6 @@ namespace LuaBind // 根据luaL_Reg建立lib table,并在_G和package.loaded建立对libname的索引,指向lib table。 void RegisterLib(cc8* libname, const luaL_Reg* l); -#if LUA_BIND_ENABLE_PLAIN_CLASS - // 注册纯lua类的注册函数,用来创建纯lua类。 - void RegisterPlainClassRegistry(cc8* name); -#endif - -#if LUA_BIND_ENABLE_PLAIN_ENUM - // 注册纯lua的枚举,以防止修改枚举值。 - void RegisterPlainEnumRegistry(cc8* name); -#endif - protected: friend class VM; @@ -267,9 +257,9 @@ namespace LuaBind // 注册工厂,注册class table,以type name为键设置在名称空间上。在注册阶段不会设置元表,等到New方法调用的时候才会。 template<class TYPE> - void State::RegisterFactory() + void State::RegisterNativeClass() { - cc8* type = TYPE::GetFactoryName(); + cc8* type = TYPE::GetNativeClassName(); lua_State* L = mState; State& state = *this; @@ -281,12 +271,12 @@ namespace LuaBind lua_newtable(L); int clsIdx = lua_gettop(L); TYPE::RegisterClassShared(state); - TYPE::RegisterFactoryClass(state); + TYPE::RegisterNativeClass(state); TYPE::RegisterClass(state); // 自定义注册内容 - if (onRegisterFactoryClass) - onRegisterFactoryClass(state, clsIdx, type, g_NameSpace); + if (onRegisterNativeClass) + onRegisterNativeClass(state, clsIdx, type, g_NameSpace); // 清理栈 lua_settop(state, clsIdx); @@ -300,13 +290,6 @@ namespace LuaBind //_assertmethod(-1, "New"); #undef _assertmethod -#if LUA_BIND_ENABLE_NATIVE_EXTEND - // .Extend() - lua_pushvalue(state, -1); // class table - lua_pushcclosure(state, TYPE::_ExtendFactory, 1); - lua_setfield(state, -2, "Extend"); -#endif - // class["__index"] = class lua_pushvalue(state, -1); // class table lua_setfield(state, -2, "__index"); |