summaryrefslogtreecommitdiff
path: root/source/3rd-party/Luax/luax_state.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/3rd-party/Luax/luax_state.cpp')
-rw-r--r--source/3rd-party/Luax/luax_state.cpp122
1 files changed, 111 insertions, 11 deletions
diff --git a/source/3rd-party/Luax/luax_state.cpp b/source/3rd-party/Luax/luax_state.cpp
index 881aaea..622f352 100644
--- a/source/3rd-party/Luax/luax_state.cpp
+++ b/source/3rd-party/Luax/luax_state.cpp
@@ -596,15 +596,6 @@ namespace Luax
return value;
}
- template<>
- int LuaxState::GetValue<int>(int idx, int value)
- {
- if (this->IsType(idx, LUA_TNUMBER)) {
- return (int)lua_tointeger(this->mState, idx);
- }
- return value;
- }
-
template <>
u16 LuaxState::GetValue < u16 >(int idx, const u16 value)
{
@@ -641,7 +632,7 @@ namespace Luax
return value;
}
- void LuaxState::PushPtrUserData(void* ptr) {
+ void LuaxState::PushPtrUserdata(void* ptr) {
void** handle = (void**)lua_newuserdata(this->mState, sizeof(void*));
assert(handle);
@@ -725,7 +716,7 @@ namespace Luax
}
#endif
-#if LUAX_ENABLE_PLAIN_ENABLE
+#if LUAX_ENABLE_PLAIN_ENUM
void LuaxState::RegisterPlainEnumRegistry(cc8* name)
{
assert(lua_istable(mState, -1));
@@ -734,4 +725,113 @@ namespace Luax
}
#endif
+ int LuaxState::ErrorType(int idx, cc8* hint)
+ {
+ return luaL_typerror(mState, idx, hint);
+ }
+
+ template <>
+ bool LuaxState::CheckParam < bool >(int idx)
+ {
+ bool b = false;
+ if (lua_type(mState, idx) == LUA_TBOOLEAN)
+ {
+ b = lua_toboolean(mState, idx);
+ }
+ else
+ {
+ luaL_typerror(mState, idx, lua_typename(mState, LUA_TBOOLEAN));
+ }
+ return b;
+ }
+
+ template <>
+ cc8* LuaxState::CheckParam < cc8* >(int idx)
+ {
+ return luaL_checkstring(mState, idx);
+ }
+
+ template <>
+ double LuaxState::CheckParam < double >(int idx)
+ {
+ return luaL_checknumber(mState, idx);
+ }
+
+ template <>
+ float LuaxState::CheckParam < float >(int idx)
+ {
+ return luaL_checknumber(mState, idx);
+ }
+
+ template <>
+ s8 LuaxState::CheckParam < s8 >(int idx)
+ {
+ return luaL_checkinteger(mState, idx);
+ }
+
+ template <>
+ s16 LuaxState::CheckParam < s16 >(int idx)
+ {
+ return luaL_checkinteger(mState, idx);
+ }
+
+ template <>
+ s32 LuaxState::CheckParam < s32 >(int idx)
+ {
+ return luaL_checkinteger(mState, idx);
+ }
+
+ template <>
+ s64 LuaxState::CheckParam < s64 >(int idx)
+ {
+ return luaL_checkinteger(mState, idx);
+ }
+
+ template <>
+ u8 LuaxState::CheckParam < u8 >(int idx)
+ {
+ return luaL_checkinteger(mState, idx);
+ }
+
+ template <>
+ u16 LuaxState::CheckParam < u16 >(int idx)
+ {
+ return luaL_checkinteger(mState, idx);
+ }
+
+ template <>
+ u32 LuaxState::CheckParam < u32 >(int idx)
+ {
+ return luaL_checkinteger(mState, idx);
+ }
+
+ template <>
+ u64 LuaxState::CheckParam < u64 >(int idx)
+ {
+ return luaL_checkinteger(mState, idx);
+ }
+
+ template <>
+ std::string LuaxState::CheckParam < std::string >(int idx)
+ {
+ return luaL_checkstring(mState, idx);
+ }
+
+ ///
+ /// check light userdata
+ ///
+ template <>
+ const void* LuaxState::CheckParam < const void* >(int idx)
+ {
+ if (IsType(idx, LUA_TLIGHTUSERDATA))
+ {
+ return GetValue<const void*>(idx, nullptr);
+ }
+ else
+ {
+ luaL_typerror(mState, idx, "light userdata");
+ return nullptr;
+ }
+ }
+
} \ No newline at end of file