mirror of
https://github.com/OpenTTD/OpenTTD
synced 2026-01-28 22:54:29 +01:00
Change: [Script] Reformat callstack output (#15171)
This commit is contained in:
42
src/3rdparty/squirrel/sqstdlib/sqstdaux.cpp
vendored
42
src/3rdparty/squirrel/sqstdlib/sqstdaux.cpp
vendored
@@ -19,7 +19,7 @@ void sqstd_printcallstack(HSQUIRRELVM v)
|
||||
SQInteger level=1; //1 is to skip this function that is level 0
|
||||
SQInteger seq=0;
|
||||
pf(v,"\n");
|
||||
pf(v,"CALLSTACK\n");
|
||||
pf(v,"CALLSTACK WITH LOCALS\n");
|
||||
while(SQ_SUCCEEDED(sq_stackinfos(v,level,&si)))
|
||||
{
|
||||
std::string_view fn="unknown";
|
||||
@@ -35,13 +35,6 @@ void sqstd_printcallstack(HSQUIRRELVM v)
|
||||
src = (p == std::string_view::npos) ? si.source : si.source.substr(p + 4);
|
||||
}
|
||||
pf(v,fmt::format("*FUNCTION [{}()] {} line [{}]\n",fn,src,si.line));
|
||||
level++;
|
||||
}
|
||||
level=0;
|
||||
pf(v,"\n");
|
||||
pf(v,"LOCALS\n");
|
||||
|
||||
for(level=0;level<10;level++){
|
||||
seq=0;
|
||||
std::optional<std::string_view> opt;
|
||||
while ((opt = sq_getlocal(v,level,seq)).has_value()) {
|
||||
@@ -50,64 +43,65 @@ void sqstd_printcallstack(HSQUIRRELVM v)
|
||||
switch(sq_gettype(v,-1))
|
||||
{
|
||||
case OT_NULL:
|
||||
pf(v,fmt::format("[{}] NULL\n",name));
|
||||
pf(v,fmt::format(" [{}] NULL\n",name));
|
||||
break;
|
||||
case OT_INTEGER:
|
||||
sq_getinteger(v,-1,&i);
|
||||
pf(v,fmt::format("[{}] {}\n",name,i));
|
||||
pf(v,fmt::format(" [{}] {}\n",name,i));
|
||||
break;
|
||||
case OT_FLOAT:
|
||||
sq_getfloat(v,-1,&f);
|
||||
pf(v,fmt::format("[{}] {:14g}\n",name,f));
|
||||
pf(v,fmt::format(" [{}] {:14g}\n",name,f));
|
||||
break;
|
||||
case OT_USERPOINTER:
|
||||
pf(v,fmt::format("[{}] USERPOINTER\n",name));
|
||||
pf(v,fmt::format(" [{}] USERPOINTER\n",name));
|
||||
break;
|
||||
case OT_STRING: {
|
||||
std::string_view view;
|
||||
sq_getstring(v,-1,view);
|
||||
pf(v,fmt::format("[{}] \"{}\"\n",name,view));
|
||||
pf(v,fmt::format(" [{}] \"{}\"\n",name,view));
|
||||
break;
|
||||
}
|
||||
case OT_TABLE:
|
||||
pf(v,fmt::format("[{}] TABLE\n",name));
|
||||
pf(v,fmt::format(" [{}] TABLE\n",name));
|
||||
break;
|
||||
case OT_ARRAY:
|
||||
pf(v,fmt::format("[{}] ARRAY\n",name));
|
||||
pf(v,fmt::format(" [{}] ARRAY\n",name));
|
||||
break;
|
||||
case OT_CLOSURE:
|
||||
pf(v,fmt::format("[{}] CLOSURE\n",name));
|
||||
pf(v,fmt::format(" [{}] CLOSURE\n",name));
|
||||
break;
|
||||
case OT_NATIVECLOSURE:
|
||||
pf(v,fmt::format("[{}] NATIVECLOSURE\n",name));
|
||||
pf(v,fmt::format(" [{}] NATIVECLOSURE\n",name));
|
||||
break;
|
||||
case OT_GENERATOR:
|
||||
pf(v,fmt::format("[{}] GENERATOR\n",name));
|
||||
pf(v,fmt::format(" [{}] GENERATOR\n",name));
|
||||
break;
|
||||
case OT_USERDATA:
|
||||
pf(v,fmt::format("[{}] USERDATA\n",name));
|
||||
pf(v,fmt::format(" [{}] USERDATA\n",name));
|
||||
break;
|
||||
case OT_THREAD:
|
||||
pf(v,fmt::format("[{}] THREAD\n",name));
|
||||
pf(v,fmt::format(" [{}] THREAD\n",name));
|
||||
break;
|
||||
case OT_CLASS:
|
||||
pf(v,fmt::format("[{}] CLASS\n",name));
|
||||
pf(v,fmt::format(" [{}] CLASS\n",name));
|
||||
break;
|
||||
case OT_INSTANCE:
|
||||
pf(v,fmt::format("[{}] INSTANCE\n",name));
|
||||
pf(v,fmt::format(" [{}] INSTANCE\n",name));
|
||||
break;
|
||||
case OT_WEAKREF:
|
||||
pf(v,fmt::format("[{}] WEAKREF\n",name));
|
||||
pf(v,fmt::format(" [{}] WEAKREF\n",name));
|
||||
break;
|
||||
case OT_BOOL:{
|
||||
sq_getbool(v,-1,&b);
|
||||
pf(v,fmt::format("[{}] {}\n",name,b?"true":"false"));
|
||||
pf(v,fmt::format(" [{}] {}\n",name,b?"true":"false"));
|
||||
}
|
||||
break;
|
||||
default: assert(0); break;
|
||||
}
|
||||
sq_pop(v,1);
|
||||
}
|
||||
level++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user