Ho un oggetto UserData Lua con un determinato tipo di metatable (ad esempio "stackoverflow.test"
). Dal codice C, voglio essere in grado di verificare esattamente di che tipo si tratta e comportarsi diversamente a seconda dei risultati. C'è una bella funzione a portata di mano (piuttosto come luaL_checkudata
, ma senza errori se la risposta non è quello che vuoi) che mi permetta di interrogare il nome del tipo di metatable del userdata? In caso contrario, suppongo di dover utilizzare lua_getmetatable
, ma poi sono un po 'confuso come determino il nome del metatable che è stato appena aggiunto allo stack.Query Lua tipo di dati utente da C
Giusto per chiarire: sto utilizzando Lua 5.1, in cui è stato modificato il comportamento di luaL_checkudata. Capisco che in 5.0 non ha usato per errore.
Sembra che lua 5.2 abbia quello che stai cercando: [luaL_testudata] (http://www.lua.org/source/5.2/lauxlib.c.html#luaL_testudata) –