Lua

De drev
Aller à : navigation, rechercher

Pense bête pour Lua

Vue générale

Lua utilise une pile (stack) en interne.

Les fonctions, arguments, variables sont poussées sur la pile avant un appel de fonction.

Les valeurs de retours sont aussi aussi poussées sur la pile par la fonction et peuvent être recupere au somment de la pile.

Communication C vers Lua

Passer une variable vers Lua

  • Utiliser luapush_XXX (ou XXX est la fonction Lua recevant le type voulu, comme lua_pushstring pour un char*)
  • Utiliser lua_setgloal avec comme paramètre le nom de la variable Lua qui récupère la valeur passé


lua_pushstring(L, cur_funct);
lua_setglobal(L, "cur_funct");

Appeler une fonction Lua depuis C

L'appel aux fonction Lua se fait par la méthode lua_call qui reçoit en paramètre le nombre d'argument attendu et retourné.


http://pgl.yoyo.org/luai/i/lua_call

http://www.troubleshooters.com/codecorn/lua/lua_c_calls_lua.htm

Les valeurs retournées sont empilé, et peuvent être recupérés

ret_1 = lua_tostring(L,-2);
ret_2 = lua_tostring(L,-1);

Communication Lua vers C

Appeller une fonction C depuis Lua

Les fonctions C appelable depuis Lua doivent avoirs la signature suivante :

int funct(lua_State* L);

puis être enregistrées par Lua avec la fonction

lua_register(funct);


Source https://www.lua.org/pil/26.html