Bonjour,
Je découvre Lua et je l'intègre dans mon programme en C++. J'aimerais associer un objet àmoi, un contexte en fait, à chaque lua_State de manière à pouvoir utiliser cet objet dans mes fonctions "registrées".
J'ai d'abord pensé faire quelque chose comme ça :
Mais je pense qu'il serait plus propre d'injecter le pointeur de mon contexte dans le lua_State si c'est possible, par contre je ne veux pas que mon contexte soit disponible dans les scripts Lua.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 map<lua_State*, MonContexte*> mapLuaContextes = ...; // Init d'un plugin Lua lua_State* L = lua_open(); lua_register(L, "my_function", my_function); mapLuaContextes[L] = new MonContexte(); ... int my_function(lua_State *L) { if(lua_gettop(L) != 0) cerr << endl << "Erreur..."; MonContexte monContexte = mapLuaContextes[L]; monContexte->faitUnTruc() return 0; }
J'ai vu qu'on peut utiliser un userdata mais j'ai l'impression qu'un userdata est exposé au script Lua.
Est-ce qu'il est possible de "cacher" une variable dans le contexte Lua ? Sinon, comment puis-je m'y prendre pour faire ça proprement svp ?
PS : N'ayant pas trouvé de vers de Lunar compatible Lua 5.2.0 j'utilise Lua 5.0.3.
Partager