From af78bbf9f1ea499be92611aa4a63664d79d13b25 Mon Sep 17 00:00:00 2001 From: chai Date: Sun, 17 Mar 2019 11:57:08 +0800 Subject: *luax --- Source/3rdParty/Luax/luax_class.hpp | 8 ++--- Source/3rdParty/Luax/luax_class.inl | 50 +++++++++++++++--------------- Source/3rdParty/Luax/luax_state.inl | 14 ++++----- Source/Asura.Engine/scripting/portable.hpp | 2 +- Source/Samples/LuaxTest/main.cpp | 6 ++-- 5 files changed, 40 insertions(+), 40 deletions(-) (limited to 'Source') diff --git a/Source/3rdParty/Luax/luax_class.hpp b/Source/3rdParty/Luax/luax_class.hpp index 6557c0b..c196024 100644 --- a/Source/3rdParty/Luax/luax_class.hpp +++ b/Source/3rdParty/Luax/luax_class.hpp @@ -38,7 +38,7 @@ namespace Luax /// 需要暴露给lua的native class需要继承此类。通过lua管理的实例要确保引用计数的正确性,在多个线程中需要确定不会误释放。 /// template - class LuaxClass + class LuaxNativeClass { public: @@ -54,8 +54,8 @@ namespace Luax protected: - LuaxClass(); - virtual ~LuaxClass(); + LuaxNativeClass(); + virtual ~LuaxNativeClass(); /// /// 将userdata push到栈顶,如果没有初始化mUserdata,初始化设置好元表并把初始化好的userdata留在栈顶。并添加一个引用。 @@ -97,7 +97,7 @@ namespace Luax //------------------------------------------------------------------------------------------------------------ /// - /// 所有LuaxClass类型的实例共享的内容 + /// 所有LuaxNativeClass类型的实例共享的内容 /// static LuaxStrongRef mClassTable; // class table,工厂和单例都有 static LuaxStrongRef mSingletonRefTable; // 如果类是单例,这个用来保存singleton的成员,以保证不会被回收类似普通类的 diff --git a/Source/3rdParty/Luax/luax_class.inl b/Source/3rdParty/Luax/luax_class.inl index 6086b3d..666c1a3 100644 --- a/Source/3rdParty/Luax/luax_class.inl +++ b/Source/3rdParty/Luax/luax_class.inl @@ -8,7 +8,7 @@ namespace Luax /// 对不同类型,通过调用GetLuaClassName获得类型名,如果是派生类,GetClassName会被覆盖,指向luax_c_getupvalue。 /// template - int LuaxClass::l_GetClassName(lua_State* L) + int LuaxNativeClass::l_GetClassName(lua_State* L) { LUAX_SETUP(L, "*"); @@ -23,7 +23,7 @@ namespace Luax /// 注册工厂和单例共有的类成员 /// template - void LuaxClass::RegisterLuaxClass(LuaxState& state) + void LuaxNativeClass::RegisterLuaxClass(LuaxState& state) { luaL_Reg regTable[] = { { "GetClassName", l_GetClassName }, @@ -37,7 +37,7 @@ namespace Luax /// 工厂类的成员,注册在class table /// template - void LuaxClass::RegisterLuaxFactoryClass(LuaxState& state) + void LuaxNativeClass::RegisterLuaxFactoryClass(LuaxState& state) { luaL_Reg regTable[] = { { "GetClass", l_GetClass }, @@ -52,7 +52,7 @@ namespace Luax /// 单例类的成员,注册在class table /// template - void LuaxClass::RegisterLuaxSingletonClass(LuaxState& state) + void LuaxNativeClass::RegisterLuaxSingletonClass(LuaxState& state) { luaL_Reg regTable[] = { { NULL, NULL } @@ -62,7 +62,7 @@ namespace Luax } template - void LuaxClass::PushLuaxClassTable(LuaxState& state) + void LuaxNativeClass::PushLuaxClassTable(LuaxState& state) { assert(mClassTable); @@ -70,24 +70,24 @@ namespace Luax } template - void LuaxClass::SetLuaxClassTableRef(LuaxState& state, int idx) + void LuaxNativeClass::SetLuaxClassTableRef(LuaxState& state, int idx) { mClassTable.SetRef(state, idx); } template - LuaxClass::LuaxClass() + LuaxNativeClass::LuaxNativeClass() { } template - LuaxClass::~LuaxClass() + LuaxNativeClass::~LuaxNativeClass() { } template template - void LuaxClass::LuaRetain(LuaxState& state, U* userdata) + void LuaxNativeClass::LuaRetain(LuaxState& state, U* userdata) { if (PushLuaxRefTable(state)) { @@ -105,7 +105,7 @@ namespace Luax template template - void LuaxClass::LuaRelease(LuaxState& state, U* userdata) + void LuaxNativeClass::LuaRelease(LuaxState& state, U* userdata) { if (PushLuaxRefTable(state)) { @@ -130,7 +130,7 @@ namespace Luax } template - bool LuaxClass::PushLuaxUserdata(LuaxState& state) + bool LuaxNativeClass::PushLuaxUserdata(LuaxState& state) { assert(!T::IsLuaxClassSingleton()); if (!mUserdata) @@ -142,7 +142,7 @@ namespace Luax } template - bool LuaxClass::PushLuaxMemberTable(LuaxState& state) + bool LuaxNativeClass::PushLuaxMemberTable(LuaxState& state) { int top = state.GetTop(); if (this->PushLuaxUserdata(state)) @@ -163,7 +163,7 @@ namespace Luax } template - bool LuaxClass::PushLuaxRefTable(LuaxState& state) + bool LuaxNativeClass::PushLuaxRefTable(LuaxState& state) { // Singleton if (T::IsLuaxClassSingleton()) @@ -199,7 +199,7 @@ namespace Luax /// class table 所有本类型的实例共有的函数表 /// template - void LuaxClass::BindToLua(LuaxState& state) + void LuaxNativeClass::BindToLua(LuaxState& state) { // 单例不能绑定userdata assert(!T::IsLuaxClassSingleton()); @@ -250,7 +250,7 @@ namespace Luax /// 成员引用管理 /// template - void LuaxClass::SetMemberRef(LuaxState& state, LuaxMemberRef& memRef, int idx) + void LuaxNativeClass::SetMemberRef(LuaxState& state, LuaxMemberRef& memRef, int idx) { ClearMemberRef(state, memRef); if (!lua_isnil(state, idx)) @@ -266,7 +266,7 @@ namespace Luax } template - bool LuaxClass::PushMemberRef(LuaxState& state, LuaxMemberRef& memRef) + bool LuaxNativeClass::PushMemberRef(LuaxState& state, LuaxMemberRef& memRef) { if (memRef) { @@ -286,7 +286,7 @@ namespace Luax } template - void LuaxClass::ClearMemberRef(LuaxState& state, LuaxMemberRef& memRef) + void LuaxNativeClass::ClearMemberRef(LuaxState& state, LuaxMemberRef& memRef) { if (memRef) { @@ -305,7 +305,7 @@ namespace Luax /// 释放工厂创建的实例 /// template - int LuaxClass::l___gc(lua_State* L) + int LuaxNativeClass::l___gc(lua_State* L) { LUAX_SETUP(L, "U"); @@ -317,7 +317,7 @@ namespace Luax /// 地址 类名 /// template - int LuaxClass::l___tostring(lua_State* L) + int LuaxNativeClass::l___tostring(lua_State* L) { LUAX_STATE(L); T* self = state.GetLuaUserdata(1); @@ -345,7 +345,7 @@ namespace Luax } template - int LuaxClass::l_ExtendFactory(lua_State* L) + int LuaxNativeClass::l_ExtendFactory(lua_State* L) { @@ -353,7 +353,7 @@ namespace Luax } template - int LuaxClass::l_ExtendSingleton(lua_State* L) + int LuaxNativeClass::l_ExtendSingleton(lua_State* L) { @@ -361,7 +361,7 @@ namespace Luax } template - int LuaxClass::l_GetClass(lua_State* L) + int LuaxNativeClass::l_GetClass(lua_State* L) { LUAX_STATE(L); if (!mClassTable) @@ -372,7 +372,7 @@ namespace Luax } template - int LuaxClass::l_GetRefTable(lua_State* L) + int LuaxNativeClass::l_GetRefTable(lua_State* L) { LUAX_STATE(L); T* self = state.GetLuaUserdata(1); @@ -382,7 +382,7 @@ namespace Luax return 1; } - template LuaxStrongRef LuaxClass::mClassTable; // class table - template LuaxStrongRef LuaxClass::mSingletonRefTable; // 单例 + template LuaxStrongRef LuaxNativeClass::mClassTable; // class table + template LuaxStrongRef LuaxNativeClass::mSingletonRefTable; // 单例 } \ No newline at end of file diff --git a/Source/3rdParty/Luax/luax_state.inl b/Source/3rdParty/Luax/luax_state.inl index 63f849f..63245bb 100644 --- a/Source/3rdParty/Luax/luax_state.inl +++ b/Source/3rdParty/Luax/luax_state.inl @@ -15,8 +15,8 @@ namespace Luax // class table lua_newtable(L); - LuaxClass::RegisterLuaxClass(state); - LuaxClass::RegisterLuaxFactoryClass(state); + LuaxNativeClass::RegisterLuaxClass(state); + LuaxNativeClass::RegisterLuaxFactoryClass(state); T::RegisterLuaxClass(state); // 检测T里面是否没有注册必须的方法 @@ -31,14 +31,14 @@ namespace Luax // .Extend() lua_pushvalue(state, -1); // class table - lua_pushcclosure(state, LuaxClass::l_ExtendFactory, 1); + lua_pushcclosure(state, LuaxNativeClass::l_ExtendFactory, 1); lua_setfield(state, -2, "Extend"); // class["__index"] = class lua_pushvalue(state, -1); // class table lua_setfield(state, -2, "__index"); - LuaxClass::SetLuaxClassTableRef(state, -1); + LuaxNativeClass::SetLuaxClassTableRef(state, -1); cc8* type = T::GetLuaxFactoryName(); SetField(top, type); @@ -64,11 +64,11 @@ namespace Luax // class table. lua_newtable(L); - LuaxClass::RegisterLuaxClass(state); - LuaxClass::RegisterLuaxFactoryClass(state); + LuaxNativeClass::RegisterLuaxClass(state); + LuaxNativeClass::RegisterLuaxFactoryClass(state); T::RegisterLuaxClass(state); - LuaxClass::SetLuaxClassTableRef(state, -1); + LuaxNativeClass::SetLuaxClassTableRef(state, -1); // class table的__index和__newindex指向自身 lua_pushvalue(state, -1); diff --git a/Source/Asura.Engine/scripting/portable.hpp b/Source/Asura.Engine/scripting/portable.hpp index 450f4bb..aeb1ed0 100644 --- a/Source/Asura.Engine/scripting/portable.hpp +++ b/Source/Asura.Engine/scripting/portable.hpp @@ -11,7 +11,7 @@ namespace AsuraEngine { template - class Portable : public Luax::LuaxClass + class Portable : public Luax::LuaxNativeClass { public: diff --git a/Source/Samples/LuaxTest/main.cpp b/Source/Samples/LuaxTest/main.cpp index 65cdaa1..f87226e 100644 --- a/Source/Samples/LuaxTest/main.cpp +++ b/Source/Samples/LuaxTest/main.cpp @@ -18,7 +18,7 @@ using namespace Luax; class School : public Singleton - , public LuaxClass + , public LuaxNativeClass { public: @@ -65,7 +65,7 @@ void School::RegisterLuaxPostprocess(Luax::LuaxState&) //---------------------------------------------------------------------------------------------------------------- -class Boy : public LuaxClass +class Boy : public LuaxNativeClass { public: @@ -197,7 +197,7 @@ void Boy::RegisterLuaxPostprocess(LuaxState& state) //---------------------------------------------------------------------------------------------------------------- -class Girl : public LuaxClass +class Girl : public LuaxNativeClass { }; -- cgit v1.1-26-g67d0