Me estoy metiendo ahora en el tema de programación bajo PSP, mi primer proyecto es una librería en C, que tengo ya casi terminada (ya os la enseñaré en breve cuando esté).
No conozco LUA, entiendo su sintaxis, es muy simple, pero a lo que pregunto no llego. Ya que es uno de los lenguajes más usados por aquí, me gustaría que alguien me dijera la manera de unir código en C, para implementarlo como un "addon" para LUA, o en su defecto poner un LEEME para que los LUAderos puedan usarla.
Un saludo
LuaDiE: Crea en Lua sin teclear código. Compatible HM7, HMv2, LuaPlayer, LuaDEV y PGE.
Creo que
Puedes hacerlo al revés es decir, desde C llamar un fragmente de código de Lua pero no al revés.
Saludos.
No creo...
Vaya, copio y pego de la referencia oficial:
3 - The Application Program Interface
This section describes the C API for Lua, that is, the set of C functions available to the host program to communicate with Lua. All API functions and related types and constants are declared in the header file lua.h.
(...)
3.1 - The Stack
Lua uses a virtual stack to pass values to and from C. Each element in this stack represents a Lua value (nil, number, string, etc.).
Whenever Lua calls C, the called function gets a new stack, which is independent of previous stacks and of stacks of C functions that are still active. This stack initially contains any arguments to the C function and it is where the C function pushes its results to be returned to the caller (see lua_CFunction).
Las partes en negrita significan, respectivamente (para los no hablantes de extranjero) "Lua emplea una pila virtual para pasar valores a y desde C", y "Siempre que Lua llama a C (...)". Así que la comunicación es, indudablemente, posible desde ambos sentidos (o eso dice la referencia oficial de los que han hecho el lenguaje :) ).
Otra cosa es el cómo :).
Strength is irrelevant. Resistance is future. We wish to improve ourselves.
La fuerza es irrelevante. La resistencia es futuro. Queremos mejorarnos.
Me temo...
Me temo que por mi parte sólo puedo darte un poco de LEPM, porque lo que pides no lo he probado (hago las bibliotecas directamente en Lua).
Pero vaya, si no sabes dónde está EPM (y eres nuevito en Lua, así que entra en lo probable...) ya puede ser de ayuda...
Lo primero, supongo que te interesará echarle un ojo a la referencia oficial de lua_CFunction y lo que sigue, todo lo de push en la stack y esas cosas de coders (es la referencia de la última versión, la 5.1).
Y por otra parte, también puedes ojear los capítulos 24 y ss, o sea, toda la parte IV —The C API— de la 1ª edición de Programming in Lua. Este libro (esa edición, concretamente) es para Lua 5.0, pero los cambios necesarios para 5.1 vienen indicados en rojo. Obviamente, la 2ª edición aún no está disponible libremente en Internet, a diferencia de la primera :).
PS.: Es una tontería, pero quizá te interese. El nombre correcto no es LUA sino Lua, porque no es un acrónimo, sino (la) "Luna" en portugués/brasileiro. Lo toma por ser una adaptación o algo de Sol (o SOL, no sé :) ).
PS2.: Sí, efectivamente, entonces no serían (seríamos) "LUAderos", sino más bien unos "lunáticos". O selenitas, en plan fino. :D
Strength is irrelevant. Resistance is future. We wish to improve ourselves.
La fuerza es irrelevante. La resistencia es futuro. Queremos mejorarnos.
Desilusión con Lua
Ya viendo el primer párrafo del enlace que me diste, e indagando un poco más...
In order to communicate properly with Lua, a C function must use the following protocol(...)
Osea que las funciones en C DEBEN USAR el siguiente protocolo(...). aparte de usar un stack para los datos como comentaste. Eso significa que C debe adaptarse a Lua y no al revés. La verdad es que no le veo mucho sentido, C suele el "pegamento" de los lenguajes, ya que muchas veces hace de pasarela entre otros,
Al menos, por mi parte, no pienso adaptar un código en C para que sea usado el Lua, y más cuando hay muchos lenguajes que pueden usar el C directamente.
En fin, si alguien descubre algo más...
LuaDiE: Crea en Lua sin teclear código. Compatible HM7, HMv2, LuaPlayer, LuaDEV y PGE.
Gracias
Echaré un vistazo, son unos enlaces muy interesantes, si no es muy extenso intentaré hacer algo. Aún así no podré probarlo, pero si encuentro alguna forma de hacerlo, lo dejaré en un LEEME.
Sobre "LUA", gracias por la aclaración a mí me gusta nombrar las cosas con su mayúsculas correspondientes (siempre escribo GNU/Linux :D), una cosa que ya sé.
LuaDiE: Crea en Lua sin teclear código. Compatible HM7, HMv2, LuaPlayer, LuaDEV y PGE.
A decir verdad, yo lo busque
A decir verdad, yo lo busque y no encontre, pero no te desanimes y...
BUSCA,BUSCA XD