| 288 | |
| 289 | |
| 290 | LUALIB_API void *luaL_testudata (lua_State *L, int ud, const char *tname) { |
| 291 | void *p = lua_touserdata(L, ud); |
| 292 | if (p != NULL) { /* value is a userdata? */ |
| 293 | if (lua_getmetatable(L, ud)) { /* does it have a metatable? */ |
| 294 | luaL_getmetatable(L, tname); /* get correct metatable */ |
| 295 | if (!lua_rawequal(L, -1, -2)) /* not the same? */ |
| 296 | p = NULL; /* value is a userdata with wrong metatable */ |
| 297 | lua_pop(L, 2); /* remove both metatables */ |
| 298 | return p; |
| 299 | } |
| 300 | } |
| 301 | return NULL; /* value is not a userdata with a metatable */ |
| 302 | } |
| 303 | |
| 304 | |
| 305 | LUALIB_API void *luaL_checkudata (lua_State *L, int ud, const char *tname) { |
no test coverage detected