diff options
author | Tiger Wang <ziwei.tiger@hotmail.co.uk> | 2013-11-24 15:55:08 +0100 |
---|---|---|
committer | Tiger Wang <ziwei.tiger@hotmail.co.uk> | 2013-11-24 15:55:08 +0100 |
commit | f95064a85c83e1a77a5de2f8a09e5907573f8277 (patch) | |
tree | 9896aa6cff228acbc0b188b6c37e2032152fe661 /source/LuaState.cpp | |
parent | Fixed some comments and added debug logging (diff) | |
parent | RCONClient: Initial implementation. (diff) | |
download | cuberite-f95064a85c83e1a77a5de2f8a09e5907573f8277.tar cuberite-f95064a85c83e1a77a5de2f8a09e5907573f8277.tar.gz cuberite-f95064a85c83e1a77a5de2f8a09e5907573f8277.tar.bz2 cuberite-f95064a85c83e1a77a5de2f8a09e5907573f8277.tar.lz cuberite-f95064a85c83e1a77a5de2f8a09e5907573f8277.tar.xz cuberite-f95064a85c83e1a77a5de2f8a09e5907573f8277.tar.zst cuberite-f95064a85c83e1a77a5de2f8a09e5907573f8277.zip |
Diffstat (limited to 'source/LuaState.cpp')
-rw-r--r-- | source/LuaState.cpp | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/source/LuaState.cpp b/source/LuaState.cpp index 8d2fa8eca..644f4972c 100644 --- a/source/LuaState.cpp +++ b/source/LuaState.cpp @@ -739,6 +739,39 @@ bool cLuaState::CallFunction(int a_NumResults) +bool cLuaState::CheckParamUserTable(int a_StartParam, const char * a_UserTable, int a_EndParam) +{ + ASSERT(IsValid()); + + if (a_EndParam < 0) + { + a_EndParam = a_StartParam; + } + + tolua_Error tolua_err; + for (int i = a_StartParam; i <= a_EndParam; i++) + { + if (tolua_isusertable(m_LuaState, i, a_UserTable, 0, &tolua_err)) + { + continue; + } + // Not the correct parameter + lua_Debug entry; + VERIFY(lua_getstack(m_LuaState, 0, &entry)); + VERIFY(lua_getinfo (m_LuaState, "n", &entry)); + AString ErrMsg = Printf("#ferror in function '%s'.", (entry.name != NULL) ? entry.name : "?"); + tolua_error(m_LuaState, ErrMsg.c_str(), &tolua_err); + return false; + } // for i - Param + + // All params checked ok + return true; +} + + + + + bool cLuaState::CheckParamUserType(int a_StartParam, const char * a_UserType, int a_EndParam) { ASSERT(IsValid()); @@ -838,6 +871,39 @@ bool cLuaState::CheckParamNumber(int a_StartParam, int a_EndParam) +bool cLuaState::CheckParamString(int a_StartParam, int a_EndParam) +{ + ASSERT(IsValid()); + + if (a_EndParam < 0) + { + a_EndParam = a_StartParam; + } + + tolua_Error tolua_err; + for (int i = a_StartParam; i <= a_EndParam; i++) + { + if (tolua_isstring(m_LuaState, i, 0, &tolua_err)) + { + continue; + } + // Not the correct parameter + lua_Debug entry; + VERIFY(lua_getstack(m_LuaState, 0, &entry)); + VERIFY(lua_getinfo (m_LuaState, "n", &entry)); + AString ErrMsg = Printf("#ferror in function '%s'.", (entry.name != NULL) ? entry.name : "?"); + tolua_error(m_LuaState, ErrMsg.c_str(), &tolua_err); + return false; + } // for i - Param + + // All params checked ok + return true; +} + + + + + bool cLuaState::CheckParamEnd(int a_Param) { tolua_Error tolua_err; |