print does implicit tostring, also generates a list ouside of console too

This commit is contained in:
mniip 2013-04-26 17:15:33 +04:00
parent f9017bc7bb
commit 9f7d45f8fd

View File

@ -843,22 +843,44 @@ int luatpt_setconsole(lua_State* l)
luacon_controller->HideConsole();
return 0;
}
static int luaL_tostring (lua_State *L, int n) {
luaL_checkany(L, n);
switch (lua_type(L, n)) {
case LUA_TNUMBER:
lua_pushstring(L, lua_tostring(L, n));
break;
case LUA_TSTRING:
lua_pushvalue(L, n);
break;
case LUA_TBOOLEAN:
lua_pushstring(L, (lua_toboolean(L, n) ? "true" : "false"));
break;
case LUA_TNIL:
lua_pushliteral(L, "nil");
break;
default:
lua_pushfstring(L, "%s: %p", luaL_typename(L, n), lua_topointer(L, n));
break;
}
return 1;
}
int luatpt_log(lua_State* l)
{
int args = lua_gettop(l);
std::string text = "";
for(int i = 1; i <= args; i++)
{
luaL_tostring(l, lua_gettop(l));
if(text.length())
text=std::string(luaL_optstring(l, lua_gettop(l), "")) + ", " + text;
else
text=std::string(luaL_optstring(l, lua_gettop(l), ""));
lua_pop(l, 2);
}
if((*luacon_currentCommand))
{
if(!(*luacon_lastError).length())
(*luacon_lastError) = luaL_optstring(l, i, "");
(*luacon_lastError) = text;
else
(*luacon_lastError) += ", " + std::string(luaL_optstring(l, i, ""));
}
else
luacon_ci->Log(CommandInterface::LogNotice, luaL_optstring(l, i, ""));
}
luacon_ci->Log(CommandInterface::LogNotice, text.c_str());
return 0;
}