MCPcopy Create free account
hub / github.com/ArduPilot/ardupilot / luaV_objlen

Function luaV_objlen

libraries/AP_Scripting/lua/src/lvm.c:521–547  ·  view source on GitHub ↗

** Main operation 'ra' = #rb'. */

Source from the content-addressed store, hash-verified

519** Main operation 'ra' = #rb'.
520*/
521void luaV_objlen (lua_State *L, StkId ra, const TValue *rb) {
522 const TValue *tm;
523 switch (ttype(rb)) {
524 case LUA_TTABLE: {
525 Table *h = hvalue(rb);
526 tm = fasttm(L, h->metatable, TM_LEN);
527 if (tm) break; /* metamethod? break switch to call it */
528 setivalue(ra, luaH_getn(h)); /* else primitive len */
529 return;
530 }
531 case LUA_TSHRSTR: {
532 setivalue(ra, tsvalue(rb)->shrlen);
533 return;
534 }
535 case LUA_TLNGSTR: {
536 setivalue(ra, tsvalue(rb)->u.lnglen);
537 return;
538 }
539 default: { /* try metamethod */
540 tm = luaT_gettmbyobj(L, rb, TM_LEN);
541 if (ttisnil(tm)) /* no metamethod? */
542 luaG_typeerror(L, rb, "get length of");
543 break;
544 }
545 }
546 luaT_callTM(L, tm, rb, rb, ra, 1);
547}
548
549
550/*

Callers 2

luaV_executeFunction · 0.85
lua_lenFunction · 0.85

Calls 4

luaH_getnFunction · 0.85
luaT_gettmbyobjFunction · 0.85
luaG_typeerrorFunction · 0.85
luaT_callTMFunction · 0.85

Tested by

no test coverage detected