9 votes

Comment créer une table Lua en C++ et la passer à une fonction Lua ?

En C++, j'ai un map<string, string> contenant un nombre inconnu d'entrées. Comment puis-je transmettre ces données à une fonction Lua, afin que cette dernière puisse les utiliser comme un tableau ?

19voto

sean riley Points 1520

Si vous voulez une vraie table 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);
}

avec les types appropriés pour votre carte remplacés par .

5voto

Doug Currie Points 26016

Quelques options...

  1. Copier la carte dans une nouvelle table Lua, et passer la table Lua.

  2. Créer un table de procuration qui dirige les lectures et les écritures par l'intermédiaire de la métabase __index y __newindex métaméthodes

L'inconvénient de (1) est bien sûr la copie.

L'inconvénient de (2) est que pairs() ne fonctionnera pas sur la table proxy

Une discussion sur les correctifs à apporter à Lua pour la généralisation de l'utilisation de l'anglais comme langue étrangère. pairs es dans le wiki y ce fil de discussion sur la liste de diffusion . Généralisée pairs est attendue pour Lua 5.2

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X