Précédent   Forum du club des développeurs et IT Pro > C et C++ > Bibliothèques > Autres
Autres Vos questions sur les autres bibliothèques
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 12/05/2012, 12h21   #1
Erwin
Membre à l'essai
 
Inscription : janvier 2004
Messages : 69
Détails du profil
Informations personnelles :
Âge : 36
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : janvier 2004
Messages : 69
Points : 23
Points : 23
Par défaut C(++)/Lua et contexte perso

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 :
Code :
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;
}
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.
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.
Erwin est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 13h59.


 
 
 
 
Partenaires

Hébergement Web