1
0
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:
Loïc Guilloux
2026-01-27 22:30:04 +01:00
committed by GitHub
parent 3937d7ed6f
commit fb8d4e880e
2 changed files with 24 additions and 32 deletions

View File

@@ -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++;
}
}
}