Boucle à travers toutes les variables globales Lua en C ++

Je cherche depuis un certain temps et je n’ai pas trouvé de moyen d’extraire toutes les variables globales à partir de C ++. Considérez ce petit script de test Lua.

myGlobal1 = "Global 1" myGlobal2 = 2 function test() local l1=0 print (myGlobal1,myGlobal2,l1) end test() 

Supposons que vous print (myGlobal1,myGlobal2,l1) l’exécution à l’ print (myGlobal1,myGlobal2,l1) et que C ++ obtienne toutes les variables globales ( myGlobal1 et myGlobal2 ). Ces exemples sont arbitraires, les variables globales, d’un sharepoint vue C ++, sont inconnues.

J’ai lua_getglobal() mais il me faut d’abord connaître le nom de la variable. J’ai regardé lua_getupvalue() mais je _ENV eu que ” _ENV ” comme résultat.

Je suppose que je peux utiliser lua_getglobal() dès que j’en connais le nom, mais comment puis-je obtenir la liste des variables globales (à partir de C ++)? J’ai la structure lua_Debug à ce stade (si c’est pour vous aider)

EDIT Ce message n’était pas à l’origine une itération sur une table, mais sur la façon de trouver les propres globals de l’utilisateur.

Cependant, j’ai posté une solution sur la façon dont cela peut être fait ici .

Ok je l’ai résolu.

 lua_pushglobaltable(L); // Get global table lua_pushnil(L); // put a nil key on stack while (lua_next(L,-2) != 0) { // key(-1) is replaced by the next key(-1) in table(-2) name = lua_tossortingng(L,-2); // Get key(-2) name lua_pop(L,1); // remove value(-1), now key on top at(-1) } lua_pop(L,1); // remove global table(-1) 

Lorsque lua_next() ne trouve plus d’entrées, le nom de la clé est affiché, laissant la table au premier plan (-1).

Le problème suivant serait de distinguer mes propres globaux du rest des entrées de la table …