diff options
Diffstat (limited to 'source/3rd-party/Luax/luax_state.cpp')
-rw-r--r-- | source/3rd-party/Luax/luax_state.cpp | 122 |
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 |