Added LuaInstance::DumpStack
Former-commit-id: 89c3cca3debae881007df83106bb86886a6c26de
This commit is contained in:
parent
b07812d310
commit
11c2f82835
|
|
@ -51,6 +51,8 @@ class NAZARA_API NzLuaInstance : NzNonCopyable
|
|||
|
||||
void Concatenate(int count);
|
||||
|
||||
NzString DumpStack() const;
|
||||
|
||||
void Error(const char* message);
|
||||
void Error(const NzString& message);
|
||||
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@
|
|||
#include <Nazara/Core/Error.hpp>
|
||||
#include <Nazara/Core/File.hpp>
|
||||
#include <Nazara/Core/MemoryStream.hpp>
|
||||
#include <Nazara/Core/StringStream.hpp>
|
||||
#include <cstdlib>
|
||||
#include <stdexcept>
|
||||
#include <unordered_map>
|
||||
|
|
@ -221,6 +222,65 @@ void NzLuaInstance::Concatenate(int count)
|
|||
lua_concat(m_state, count);
|
||||
}
|
||||
|
||||
NzString NzLuaInstance::DumpStack() const
|
||||
{
|
||||
NzStringStream stream;
|
||||
unsigned int stackTop = GetStackTop();
|
||||
stream << stackTop << " entries\n";
|
||||
|
||||
for (unsigned int i = 1; i <= stackTop; ++i)
|
||||
{
|
||||
stream << i << ": ";
|
||||
switch (GetType(i))
|
||||
{
|
||||
case nzLuaType_Boolean:
|
||||
stream << "Boolean(" << ToBoolean(i) << ')';
|
||||
break;
|
||||
|
||||
case nzLuaType_Function:
|
||||
stream << "Function";
|
||||
break;
|
||||
|
||||
case nzLuaType_LightUserdata:
|
||||
case nzLuaType_Userdata:
|
||||
stream << "Userdata(" << ToUserdata(i) << ')';
|
||||
break;
|
||||
|
||||
case nzLuaType_Nil:
|
||||
stream << "Nil";
|
||||
break;
|
||||
|
||||
case nzLuaType_None:
|
||||
stream << "None";
|
||||
break;
|
||||
|
||||
case nzLuaType_Number:
|
||||
stream << "Number(" << ToNumber(i) << ')';
|
||||
break;
|
||||
|
||||
case nzLuaType_String:
|
||||
stream << "String(" << ToString(i) << ')';
|
||||
break;
|
||||
|
||||
case nzLuaType_Table:
|
||||
stream << "Table";
|
||||
break;
|
||||
|
||||
case nzLuaType_Thread:
|
||||
stream << "Thread";
|
||||
break;
|
||||
|
||||
default:
|
||||
stream << "Unknown";
|
||||
break;
|
||||
}
|
||||
|
||||
stream << '\n';
|
||||
}
|
||||
|
||||
return stream.ToString();
|
||||
}
|
||||
|
||||
void NzLuaInstance::Error(const char* message)
|
||||
{
|
||||
luaL_error(m_state, message);
|
||||
|
|
|
|||
Loading…
Reference in New Issue