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 ?
Réponses
Trop de publicités?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 .
Quelques options...
-
Copier la carte dans une nouvelle table Lua, et passer la table Lua.
-
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