diff options
Diffstat (limited to 'source/3rd-party/Luax/luax_state.inl')
-rw-r--r-- | source/3rd-party/Luax/luax_state.inl | 71 |
1 files changed, 36 insertions, 35 deletions
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 tabletype nameΪƿռϡעβԪȵNewõʱŻᡣ /// - template<typename T> + template<class TYPE> 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<T>::RegisterLuaxClass(state); - LuaxNativeClass<T>::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<T>::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<T>::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<typename T> + template<typename TYPE> void LuaxState::RegisterSingleton() { lua_State* L = mState; @@ -66,11 +67,11 @@ namespace Luax // class table. lua_newtable(L); - LuaxNativeClass<T>::RegisterLuaxClass(state); - LuaxNativeClass<T>::RegisterLuaxSingletonClass(state); - T::RegisterLuaxClass(state); + TYPE::RegisterLuaxClassShared(state); + TYPE::RegisterLuaxSingletonClass(state); + TYPE::RegisterLuaxClass(state); - LuaxNativeClass<T>::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<T>::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<typename T> - void LuaxState::SetField(int idx, cc8* key, T value) + template<typename TYPE> + void LuaxState::SetField(int idx, cc8* key, TYPE value) { if (IsTableOrUserdata(idx)) { @@ -103,8 +104,8 @@ namespace Luax } } - template<typename T> - void LuaxState::SetFieldByIndex(int idx, int key, T value) + template<typename TYPE> + void LuaxState::SetFieldByIndex(int idx, int key, TYPE value) { if (IsTableOrUserdata(idx)) { @@ -114,28 +115,28 @@ namespace Luax } } - template<typename T> - T LuaxState::GetField(int idx, cc8* key, T value) + template<typename TYPE> + 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<typename T> - T LuaxState::GetField(int idx, int key, T value) + template<typename TYPE> + 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<typename T> - T* LuaxState::GetUserdata(int idx) + template<typename TYPE> + TYPE* LuaxState::GetUserdata(int idx) { void* p = nullptr; @@ -144,11 +145,11 @@ namespace Luax p = *(void**)lua_touserdata(mState, idx); } - return static_cast<T*>(p); + return static_cast<TYPE*>(p); } - template<typename T> - T* LuaxState::CheckUserdata(int idx) + template<typename TYPE> + 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<T>(idx); + TYPE* udata = GetUserdata<TYPE>(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; } |