backport lua_rawlen from 5.2

This commit is contained in:
Francois Perrad 2017-04-25 13:23:36 +02:00
parent a119497bec
commit 316bfb1ab7
2 changed files with 15 additions and 0 deletions

View File

@ -591,6 +591,20 @@ LUA_API size_t lua_objlen(lua_State *L, int idx)
}
}
LUA_API size_t lua_rawlen(lua_State *L, int idx)
{
TValue *o = index2adr(L, idx);
if (tvisstr(o)) {
return strV(o)->len;
} else if (tvistab(o)) {
return (size_t)lj_tab_len(tabV(o));
} else if (tvisudata(o)) {
return udataV(o)->len;
} else {
return 0;
}
}
LUA_API lua_CFunction lua_tocfunction(lua_State *L, int idx)
{
cTValue *o = index2adr(L, idx);

View File

@ -352,6 +352,7 @@ LUA_API const lua_Number *lua_version (lua_State *L);
LUA_API void lua_copy (lua_State *L, int fromidx, int toidx);
LUA_API lua_Number lua_tonumberx (lua_State *L, int idx, int *isnum);
LUA_API lua_Integer lua_tointegerx (lua_State *L, int idx, int *isnum);
LUA_API size_t lua_rawlen (lua_State *L, int idx);
/* From Lua 5.3. */
LUA_API int lua_isyieldable (lua_State *L);