Desarrollo: Programando con Lua II
by egyware on Ene.10, 2012, under Desarrollo, EGa2Dengine, Engine
Hoy, aprovechando el rato libre que me quedaba decidí seguir programando con Lua. No es mucho lo que hice, es más estoy reprogramando una implementación que hice hace tiempo, le estoy aumentando el acoplamiento para ver si puedo evitar una clase Proxy (aunque con pocas esperanzas).
Hace tiempo atrás me topé con una maravillosa biblioteca se llama luabind que permite por arte de magia integrar Lua a C++, pero no pude integrarla ya que mi tiempo y mis ganas de aprender como funcionaba eran pocas. Por lo que lei necesitaba compilarse de una manera especial con bjam y Boost Build V2, asi que preferí hacer mi propia implementación pero no desde 0, si no modifiqué un ejemplo encontrado en la wiki de Lua Cpp Binding With Lunar. Con excelentes resultados en esa ocasión.
Ahora le agregué lo que hice en el articulo pasado y obtuve esto.
print(entero); print(string); test = Test(); test.a = 1; test.b = 2; test.c = 2.0; test.hola = "Hola" test.a = test:loles(test.b) funcion(test);
Codigo en lua a ejecutar
int funcion(lua_State *L){
int n = lua_gettop(L); /* number of arguments */
printf("Numeros de argumentos %d\n",n);
//printf("%s\n",luaL_typename(L,1));
LuaType v1(L,1);
Test t = (Test)v1;
printf("Test.a = %d\n",t.a);
printf("Test.b = %d\n",t.b);
printf("Test.c = %f\n",t.c);
printf("Test.hola = %s\n",t.hola);
lua_settop(L,0); //borramos todo
return 0;
};
Codigo en C++ de la funcion pasada a Lua

Y el nada glorioso resultado
El resto del codigo, no lo publicaré para no hacer más latoso este tema LOL (aunque si alguien desea, puedo publicar las modificaciones que le hice a Lunar)
Saludos!










