Luna Four Test Userdata

lua-users home
wiki

void *luaL_testudata (lua_State *L, int ud, const char *tname) { 
  void *p = lua_touserdata(L, ud); 
  if (p != NULL) {  /* value is a userdata? */ 
    if (lua_getmetatable(L, ud)) {  /* does it have a metatable? */ 
      lua_getfield(L, LUA_REGISTRYINDEX, tname);  /* get correct metatable */ 
      if (lua_rawequal(L, -1, -2)) {  /* does it have the correct mt? */ 
        lua_pop(L, 2);  /* remove both metatables */ 
        return p; 
      } 
    } 
  } 
  return NULL;  /* to avoid warnings */ 
}

RecentChanges · preferences
edit · history
Last edited January 11, 2009 4:40 am GMT (diff)