MCPcopy Create free account
hub / github.com/EmmyLua/EmmyLuaDebugger / auxgetinfo

Function auxgetinfo

third-party/lua-5.5.0/src/ldebug.c:331–392  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

329
330
331static int auxgetinfo (lua_State *L, const char *what, lua_Debug *ar,
332 Closure *f, CallInfo *ci) {
333 int status = 1;
334 for (; *what; what++) {
335 switch (*what) {
336 case 'S': {
337 funcinfo(ar, f);
338 break;
339 }
340 case 'l': {
341 ar->currentline = (ci && isLua(ci)) ? getcurrentline(ci) : -1;
342 break;
343 }
344 case 'u': {
345 ar->nups = (f == NULL) ? 0 : f->c.nupvalues;
346 if (!LuaClosure(f)) {
347 ar->isvararg = 1;
348 ar->nparams = 0;
349 }
350 else {
351 ar->isvararg = (isvararg(f->l.p)) ? 1 : 0;
352 ar->nparams = f->l.p->numparams;
353 }
354 break;
355 }
356 case 't': {
357 if (ci != NULL) {
358 ar->istailcall = !!(ci->callstatus & CIST_TAIL);
359 ar->extraargs =
360 cast_uchar((ci->callstatus & MAX_CCMT) >> CIST_CCMT);
361 }
362 else {
363 ar->istailcall = 0;
364 ar->extraargs = 0;
365 }
366 break;
367 }
368 case 'n': {
369 ar->namewhat = getfuncname(L, ci, &ar->name);
370 if (ar->namewhat == NULL) {
371 ar->namewhat = ""; /* not found */
372 ar->name = NULL;
373 }
374 break;
375 }
376 case 'r': {
377 if (ci == NULL || !(ci->callstatus & CIST_HOOKED))
378 ar->ftransfer = ar->ntransfer = 0;
379 else {
380 ar->ftransfer = L->transferinfo.ftransfer;
381 ar->ntransfer = L->transferinfo.ntransfer;
382 }
383 break;
384 }
385 case 'L':
386 case 'f': /* handled by lua_getinfo */
387 break;
388 default: status = 0; /* invalid option */

Callers 1

lua_getinfoFunction · 0.70

Calls 3

funcinfoFunction · 0.70
getcurrentlineFunction · 0.70
getfuncnameFunction · 0.70

Tested by

no test coverage detected