En C++, tengo un map<string, string>
, que contiene un número desconocido de entradas. ¿Cómo puedo pasar esto a una función Lua, para que la función Lua pueda usar los datos como una tabla?¿Cómo creo una tabla Lua en C++ y la paso a una función Lua?
9
A
Respuesta
18
si quieres una verdadera mesa de lua:
lua_newtable(L);
int top = lua_gettop(L);
for (std::map::iterator it = mymap.begin(); it != mymap.end(); ++it) {
const char* key = it->first.c_str();
const char* value = it->second.c_str();
lua_pushlstring(L, key, it->first.size());
lua_pushlstring(L, value, it->second.size());
lua_settable(L, top);
}
con el tipo correcto para su mapa sustituidos en ..
5
un par de opciones ...
Copiar el mapa en una nueva tabla Lua, y pasan la tabla Lua.
Crear una proxy table que dirige lee y escribe a través
__index
y__newindex
metamétodos de metatabla
El inconveniente de (1) es toda la copia, por supuesto.
El inconveniente de (2) es que pairs()
no funcionará en la tabla proxy
Una discusión de correcciones para Lua para generalizada pairs
es in the wiki y this mailing list thread. Se espera generalizada pairs
para Lua 5.2
Cuestiones relacionadas
- 1. ¿Cómo paso una tabla de Lua a C++?
- 2. Empujando una tabla Lua
- 3. ¿Cómo paso una lista de objetos de C++ a Lua?
- 4. Registrar la función C en la tabla Lua
- 5. función Lua
- 6. las funciones de llamada en una tabla Lua de C++
- 7. Iterar a través de una tabla Lua de C++?
- 8. Referencia a la función Lua en C/C++
- 9. Lua tabla de búsqueda
- 10. ¿Defina una función hacia adelante en Lua?
- 11. ¿Cómo se predimensiona una matriz en Lua?
- 12. Pase el objeto C++ a la función Lua
- 13. iterar a través de la tabla Lua
- 14. mesa dentro de la tabla en Lua
- 15. ¿Cómo puedo cargar una función sin nombre en Lua?
- 16. ¿Cómo comprobar si una tabla contiene un elemento en Lua?
- 17. cómo devolución de llamada una función lua de función ac
- 18. ¿Cómo puedo crear una tabla en Lua y luego agregar valores desde la API de C?
- 19. Incrustar Lua en C++
- 20. ¿Cómo inicializar rápidamente una tabla asociativa en Lua?
- 21. C++ llamar a la función lua con parámetros variables
- 22. cómo eliminar todos los elementos en una tabla de Lua?
- 23. Lua, ¿qué es Lua?
- 24. Lua - convertir una tabla en una lista separada por comas
- 25. Safe Lua invoke C++ función registrada
- 26. Ordenando asociativamente una tabla por valor en Lua
- 27. ¿Cómo crear una clase, una subclase y propiedades en Lua?
- 28. Incrustar Lua en C++
- 29. Reemplazando el método C++ en lua y devolviéndolo a C++
- 30. Lua: Obtener una página web
No debería ser demasiado difícil añadir un iterador función para la metatabla que se puede usar como pares() para tablas. –
usualmente hago la opción 2; a menos que la mesa sea pequeña y haya muchas solicitudes en una mesa que solo sea de lectura. – Javier