Blog de programación e ideas locas

Desarrollo: Programando con Lua II

by 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

Resulado_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!

:, , , , , , ,