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);
|
void Concatenate(int count);
|
||||||
|
|
||||||
|
NzString DumpStack() const;
|
||||||
|
|
||||||
void Error(const char* message);
|
void Error(const char* message);
|
||||||
void Error(const NzString& message);
|
void Error(const NzString& message);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,7 @@
|
||||||
#include <Nazara/Core/Error.hpp>
|
#include <Nazara/Core/Error.hpp>
|
||||||
#include <Nazara/Core/File.hpp>
|
#include <Nazara/Core/File.hpp>
|
||||||
#include <Nazara/Core/MemoryStream.hpp>
|
#include <Nazara/Core/MemoryStream.hpp>
|
||||||
|
#include <Nazara/Core/StringStream.hpp>
|
||||||
#include <cstdlib>
|
#include <cstdlib>
|
||||||
#include <stdexcept>
|
#include <stdexcept>
|
||||||
#include <unordered_map>
|
#include <unordered_map>
|
||||||
|
|
@ -221,6 +222,65 @@ void NzLuaInstance::Concatenate(int count)
|
||||||
lua_concat(m_state, 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)
|
void NzLuaInstance::Error(const char* message)
|
||||||
{
|
{
|
||||||
luaL_error(m_state, message);
|
luaL_error(m_state, message);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue