From e13616b5c40f912853be99f0603f0e4c97b22062 Mon Sep 17 00:00:00 2001 From: chai Date: Wed, 3 Apr 2019 21:56:51 +0800 Subject: *misc --- source/3rd-party/Luax/luax_state.inl | 71 ++++++++++++++++++------------------ 1 file changed, 36 insertions(+), 35 deletions(-) (limited to 'source/3rd-party/Luax/luax_state.inl') diff --git a/source/3rd-party/Luax/luax_state.inl b/source/3rd-party/Luax/luax_state.inl index 20d132c..6671bb5 100644 --- a/source/3rd-party/Luax/luax_state.inl +++ b/source/3rd-party/Luax/luax_state.inl @@ -4,9 +4,11 @@ namespace Luax /// /// 注册工厂,注册class table,以type name为键设置在名称空间上。在注册阶段不会设置元表,等到New方法调用的时候才会。 /// - template + template void LuaxState::RegisterFactory() { + cc8* type = TYPE::GetLuaxFactoryName(); + lua_State* L = mState; LuaxState& state = *this; @@ -15,11 +17,11 @@ namespace Luax // class table lua_newtable(L); - LuaxNativeClass::RegisterLuaxClass(state); - LuaxNativeClass::RegisterLuaxFactoryClass(state); - T::RegisterLuaxClass(state); + TYPE::RegisterLuaxClassShared(state); + TYPE::RegisterLuaxFactoryClass(state); + TYPE::RegisterLuaxClass(state); - // 检测T里面是否没有注册必须的方法 + // 检测TYPE里面是否没有注册必须的方法 #define _assertmethod(I, NAME) \ GetField(I, NAME); \ assert(IsType(-1, LUA_TFUNCTION)); \ @@ -32,7 +34,7 @@ namespace Luax #if LUAX_ENABLE_NATIVE_EXTEND // .Extend() lua_pushvalue(state, -1); // class table - lua_pushcclosure(state, LuaxNativeClass::l_ExtendFactory, 1); + lua_pushcclosure(state, TYPE::_ExtendFactory, 1); lua_setfield(state, -2, "Extend"); #endif @@ -40,22 +42,21 @@ namespace Luax lua_pushvalue(state, -1); // class table lua_setfield(state, -2, "__index"); - LuaxNativeClass::SetLuaxClassTableRef(state, -1); + TYPE::SetLuaxClassTableRef(state, -1); - cc8* type = T::GetLuaxFactoryName(); SetField(top, type); // reset top lua_settop(L, top); // 后处理 - T::RegisterLuaxPostprocess(state); + TYPE::RegisterLuaxPostprocess(state); } /// /// Singleton /// - template + template void LuaxState::RegisterSingleton() { lua_State* L = mState; @@ -66,11 +67,11 @@ namespace Luax // class table. lua_newtable(L); - LuaxNativeClass::RegisterLuaxClass(state); - LuaxNativeClass::RegisterLuaxSingletonClass(state); - T::RegisterLuaxClass(state); + TYPE::RegisterLuaxClassShared(state); + TYPE::RegisterLuaxSingletonClass(state); + TYPE::RegisterLuaxClass(state); - LuaxNativeClass::SetLuaxClassTableRef(state, -1); + TYPE::SetLuaxClassTableRef(state, -1); lua_pushvalue(state, -1); lua_setfield(state, -2, "__index"); @@ -78,22 +79,22 @@ namespace Luax #if LUAX_ENABLE_NATIVE_EXTEND // .Extend() lua_pushvalue(state, -1); // class table - lua_pushcclosure(state, LuaxNativeClass::l_ExtendSingleton, 1); + lua_pushcclosure(state, TYPE::_ExtendSingleton, 1); lua_setfield(state, -2, "Extend"); #endif - cc8* type = T::GetLuaxSingletonName(); + cc8* type = TYPE::GetLuaxSingletonName(); SetField(top, type); // reset top lua_settop(L, top); // 后处理 - T::RegisterLuaxPostprocess(state); + TYPE::RegisterLuaxPostprocess(state); } - template - void LuaxState::SetField(int idx, cc8* key, T value) + template + void LuaxState::SetField(int idx, cc8* key, TYPE value) { if (IsTableOrUserdata(idx)) { @@ -103,8 +104,8 @@ namespace Luax } } - template - void LuaxState::SetFieldByIndex(int idx, int key, T value) + template + void LuaxState::SetFieldByIndex(int idx, int key, TYPE value) { if (IsTableOrUserdata(idx)) { @@ -114,28 +115,28 @@ namespace Luax } } - template - T LuaxState::GetField(int idx, cc8* key, T value) + template + TYPE LuaxState::GetField(int idx, cc8* key, TYPE value) { GetField(idx, key); - T result = GetValue < T >(-1, value); + TYPE result = GetValue < TYPE >(-1, value); this->Pop(); return result; } - template - T LuaxState::GetField(int idx, int key, T value) + template + TYPE LuaxState::GetField(int idx, int key, TYPE value) { GetField(idx, key); - T result = GetValue < T >(-1, value); + TYPE result = GetValue < TYPE >(-1, value); Pop(); return result; } - template - T* LuaxState::GetUserdata(int idx) + template + TYPE* LuaxState::GetUserdata(int idx) { void* p = nullptr; @@ -144,11 +145,11 @@ namespace Luax p = *(void**)lua_touserdata(mState, idx); } - return static_cast(p); + return static_cast(p); } - template - T* LuaxState::CheckUserdata(int idx) + template + TYPE* LuaxState::CheckUserdata(int idx) { if (IsType(idx, LUA_TUSERDATA)) { @@ -158,11 +159,11 @@ namespace Luax { if (lua_getmetatable(mState, -1)) // class table { - T::PushLuaxClassTable(*this); // target class table + TYPE::PushLuaxClassTable(*this); // target class table if (lua_rawequal(mState, -1, -2)) { Pop(4); // ref\member\class\target class - T* udata = GetUserdata(idx); + TYPE* udata = GetUserdata(idx); return udata; // userdata } Pop(2); // target class table\class table @@ -172,7 +173,7 @@ namespace Luax Pop(1); // ref table } } - luaL_typerror(mState, idx, T::GetLuaxClassName()); + luaL_typerror(mState, idx, TYPE::GetLuaxClassName()); return nullptr; } -- cgit v1.1-26-g67d0