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 3:40 am GMT (diff)