2010-06-17 15 views

Respuesta

6

Si usted está tratando de buscar información acerca de la reflexión de una variable (lista de métodos, etc.), entonces usted puede utilizar los class_info() y class_names() funciones.

Nota: Estas funciones no están documentadas por lo que yo sé, pero al menos existen en Luabind 0.9. Úselo bajo su propio riesgo.

Para usar estas funciones Luabind en su código Lua, primero debe unirlas. Ejemplo:

#include "luabind/class_info.hpp" 
/* ... */ 
luabind::open(L); 
luabind::bind_class_info(L); 

A continuación, a partir del código Lua, puede introspección de una variable:

-- Variable "game" is an instance of class "Game" 
c = class_info(game) 

print(c.name) 
-- Prints: 
-- Game 

for k, v in pairs(c.methods) do print(k, v) end 
-- Prints: 
-- get_config function: 01765AE0 
-- on_init  function: 01765E90 
-- ... 

for k, v in pairs(c.attributes) do print(k, v) end 
-- ... 

También puede obtener una lista de todas las clases Luabind sabe acerca de:

for i, v in ipairs(class_names()) do print(v) end 
-- Prints: 
-- class_info_data 
-- Config 
-- Game 
-- ... 
+0

Gracias. Es una herramienta muy útil para obtener una información de clase. Lo estuve buscando por mucho tiempo. Pero no resuelve completamente el problema. Eso es lo que encontré en la lista de correo de luabind: "Descubrí cómo usar class_info y funciona muy bien recuperar el nombre de clase y los métodos, pero no los atributos. Solo los atributos expuestos por C++ se enumeran en Atributos, no en atributos que se crean en lua. ¿Cómo obtendría una lista de atributos creados en lua, en C++ y su valor? " – kFk

Cuestiones relacionadas