From ad2805aa839892589c13a615730da52f6e474709 Mon Sep 17 00:00:00 2001 From: chai Date: Sun, 17 Mar 2019 10:49:50 +0800 Subject: *luax --- Source/3rdParty/Luax/luax_class.inl | 50 ++++--------------------------------- 1 file changed, 5 insertions(+), 45 deletions(-) (limited to 'Source/3rdParty/Luax/luax_class.inl') diff --git a/Source/3rdParty/Luax/luax_class.inl b/Source/3rdParty/Luax/luax_class.inl index bbda6de..6086b3d 100644 --- a/Source/3rdParty/Luax/luax_class.inl +++ b/Source/3rdParty/Luax/luax_class.inl @@ -38,20 +38,6 @@ namespace Luax /// template void LuaxClass::RegisterLuaxFactoryClass(LuaxState& state) - { - luaL_Reg regTable[] = { - { "GetInterfaceTable", l_GetInterfaceTable }, - { NULL, NULL } - }; - - state.RegisterMethods(regTable); - } - - /// - /// 工厂实例的成员,注册在interface table - /// - template - void LuaxClass::RegisterLuaxInterface(LuaxState& state) { luaL_Reg regTable[] = { { "GetClass", l_GetClass }, @@ -75,14 +61,6 @@ namespace Luax state.RegisterMethods(regTable); } - template - void LuaxClass::PushLuaxInterfaceTable(LuaxState& state) - { - assert(mInterfaceTable); - - mInterfaceTable.PushRef(state); - } - template void LuaxClass::PushLuaxClassTable(LuaxState& state) { @@ -91,12 +69,6 @@ namespace Luax mClassTable.PushRef(state); } - template - void LuaxClass::SetLuaxInterfaceTableRef(LuaxState& state, int idx) - { - mInterfaceTable.SetRef(state, idx); - } - template void LuaxClass::SetLuaxClassTableRef(LuaxState& state, int idx) { @@ -221,10 +193,10 @@ namespace Luax } /// - /// 创建userdata,并以此添加ref table,member table和interface table。 + /// 创建userdata,并以此添加ref table,member table和class table。 /// ref table 是kv强引用table,保存对其他userdata的引用计数(通过userdata作为key,计数为value),以及成员引用 /// member table 保存lua创建的实例的成员 - /// interface table 所有本类型的实例共有的成员函数表 + /// class table 所有本类型的实例共有的函数表 /// template void LuaxClass::BindToLua(LuaxState& state) @@ -238,10 +210,10 @@ namespace Luax lua_newtable(state); // ref table,无法在lua处访问,用来管理C对象的生命周期 lua_newtable(state); // member table,lua中创建的对象成员都保存在这里 - PushLuaxInterfaceTable(state); // interface table,如果member table里没有这个成员,在interface table里找。 + PushLuaxClassTable(state); // class table // stack: - // -1: interface table + // -1: class table // -2: member table // -3: ref table // -4: userdata @@ -265,7 +237,7 @@ namespace Luax lua_setfield(state, refTable, "__newindex"); // 设置元表 - lua_setmetatable(state, -2); // interface is meta of member + lua_setmetatable(state, -2); // class is meta of member lua_setmetatable(state, -2); // member is meta of ref lua_setmetatable(state, -2); // ref is meta of userdata @@ -388,17 +360,6 @@ namespace Luax return 0; } - template - int LuaxClass::l_GetInterfaceTable(lua_State* L) - { - LUAX_STATE(L); - if (!mInterfaceTable) - lua_pushnil(L); - else - mInterfaceTable.PushRef(state); - return 1; - } - template int LuaxClass::l_GetClass(lua_State* L) { @@ -421,7 +382,6 @@ namespace Luax return 1; } - template LuaxStrongRef LuaxClass::mInterfaceTable; // interface table template LuaxStrongRef LuaxClass::mClassTable; // class table template LuaxStrongRef LuaxClass::mSingletonRefTable; // 单例 -- cgit v1.1-26-g67d0