Added cLuaState::CheckParamFunctionOrNil().
Also fixed error reporting for the two function-checking functions.
This commit is contained in:
parent
892c7eb57f
commit
33c84aaa4d
@ -944,10 +944,42 @@ bool cLuaState::CheckParamFunction(int a_StartParam, int a_EndParam)
|
|||||||
lua_Debug entry;
|
lua_Debug entry;
|
||||||
VERIFY(lua_getstack(m_LuaState, 0, &entry));
|
VERIFY(lua_getstack(m_LuaState, 0, &entry));
|
||||||
VERIFY(lua_getinfo (m_LuaState, "n", &entry));
|
VERIFY(lua_getinfo (m_LuaState, "n", &entry));
|
||||||
AString ErrMsg = Printf("Error in function '%s' parameter #%d. Function expected, got %s",
|
luaL_error(m_LuaState, "Error in function '%s' parameter #%d. Function expected, got %s",
|
||||||
|
(entry.name != NULL) ? entry.name : "?", i, GetTypeText(i).c_str()
|
||||||
|
);
|
||||||
|
return false;
|
||||||
|
} // for i - Param
|
||||||
|
|
||||||
|
// All params checked ok
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
bool cLuaState::CheckParamFunctionOrNil(int a_StartParam, int a_EndParam)
|
||||||
|
{
|
||||||
|
ASSERT(IsValid());
|
||||||
|
|
||||||
|
if (a_EndParam < 0)
|
||||||
|
{
|
||||||
|
a_EndParam = a_StartParam;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = a_StartParam; i <= a_EndParam; i++)
|
||||||
|
{
|
||||||
|
if (lua_isfunction(m_LuaState, i) || lua_isnil(m_LuaState, i))
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
// Not the correct parameter
|
||||||
|
lua_Debug entry;
|
||||||
|
VERIFY(lua_getstack(m_LuaState, 0, &entry));
|
||||||
|
VERIFY(lua_getinfo (m_LuaState, "n", &entry));
|
||||||
|
luaL_error(m_LuaState, "Error in function '%s' parameter #%d. Function expected, got %s",
|
||||||
(entry.name != NULL) ? entry.name : "?", i, GetTypeText(i).c_str()
|
(entry.name != NULL) ? entry.name : "?", i, GetTypeText(i).c_str()
|
||||||
);
|
);
|
||||||
LogStackTrace();
|
|
||||||
return false;
|
return false;
|
||||||
} // for i - Param
|
} // for i - Param
|
||||||
|
|
||||||
|
@ -833,6 +833,9 @@ public:
|
|||||||
/** Returns true if the specified parameters on the stack are functions; also logs warning if not */
|
/** Returns true if the specified parameters on the stack are functions; also logs warning if not */
|
||||||
bool CheckParamFunction(int a_StartParam, int a_EndParam = -1);
|
bool CheckParamFunction(int a_StartParam, int a_EndParam = -1);
|
||||||
|
|
||||||
|
/** Returns true if the specified parameters on the stack are functions or nils; also logs warning if not */
|
||||||
|
bool CheckParamFunctionOrNil(int a_StartParam, int a_EndParam = -1);
|
||||||
|
|
||||||
/** Returns true if the specified parameter on the stack is nil (indicating an end-of-parameters) */
|
/** Returns true if the specified parameter on the stack is nil (indicating an end-of-parameters) */
|
||||||
bool CheckParamEnd(int a_Param);
|
bool CheckParamEnd(int a_Param);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user