summaryrefslogtreecommitdiff
path: root/source/3rd-party/Luax/luax_state.inl
diff options
context:
space:
mode:
Diffstat (limited to 'source/3rd-party/Luax/luax_state.inl')
-rw-r--r--source/3rd-party/Luax/luax_state.inl71
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;
}