MCPcopy Create free account
hub / github.com/Serial-Studio/Serial-Studio / auxgetinfo

Function auxgetinfo

lib/lua/src/ldebug.c:329–382  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

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

Callers 1

lua_getinfoFunction · 0.85

Calls 3

funcinfoFunction · 0.85
getcurrentlineFunction · 0.85
getfuncnameFunction · 0.85

Tested by

no test coverage detected