Bennu Game Development

Foros en Español => Sugerencias => Topic started by: l1nk3rn3l on December 23, 2009, 03:36:02 PM

Title: Direcciones de funciones
Post by: l1nk3rn3l on December 23, 2009, 03:36:02 PM
Bueno estaba usando maquina de estados (FSM)

y se me vino a la mente usar funciones con punteros

(*p)()

hay alguna forma de guardar en una variable pointer la direccion de una funcion?

asi en lugar de usar una hilera de swicth , podria usar una simple variable que llame
a una funcion determinada

(*vectorfunciones[estadoactual])();

y seria mas rapido ..  pero bueno ya que esto se hace en tiempo de compilacion
habria alguna forma de hacerlo desde una DLL me podrian dar  sugerencias?

Title: Re: Direcciones de funciones
Post by: Windgate on December 23, 2009, 07:17:31 PM
Lo comente hace tiempo... Creo que tal y como esta Bennu ahora no se puede, pero seria interesante poder tener punteros a funcion como en C... Por ejemplo el sort para ordenar podria hacerse generico si pasamos la funcion con el criterio de ordenacion :P
Title: Re: Direcciones de funciones
Post by: SplinterGU on December 24, 2009, 02:15:03 AM
maquina de estado finito...

podrias ejecutar una funcion a partir de su nombre, pero punteros a funcion no es posible.
Title: Re: Direcciones de funciones
Post by: Drumpi on December 24, 2009, 02:47:47 AM
No he entendido bien lo que ha querido decir Splinter ;D, pero recuerdo que esto ya se discutió tiempo ha y se dijo que sí era posible, pensé que ya estaba implementado ¿o fue en Fenix?
Title: Re: Direcciones de funciones
Post by: Windgate on December 24, 2009, 03:03:48 AM
¿Ejecutar a partir del nombre? ¿Entonces un parametro de tipo string podria indicar la funcion a ejecutar?
Title: Re: Direcciones de funciones
Post by: SplinterGU on December 25, 2009, 02:06:03 AM
claro, como lo hace el modulo de debug...
Title: Re: Direcciones de funciones
Post by: Windgate on December 25, 2009, 01:11:43 PM
Module name: mod_debug.dll

Module Dependency:

libkey
librender


Globals vars dependency:

shift_status


Locals vars dependency:

id
father
bigbro
son
reserved.status


Internals callbacks:

module_initialize
module_finalize
process_exec_hook


Arg, poco se puede sacar con esto, he mirado el delicioso manual de Osk y aunque he visto algunas posibilidades interesantes (No he usado a fondo las posibilidades del debug aun) no se habla de ello. ¿Algun ejemplo de invocacion a una funcion a partir de una string que guarda su nombrecito?

Es interesante, ¿Pero tambien se puede especificar en la string la cantidad y tipo de los parametros?, con eso ya tenemos una alternativa al puntero a funcion de C :P

Ejemplito please :D
Title: Re: Direcciones de funciones
Post by: SplinterGU on December 25, 2009, 03:38:09 PM
nop, desde el debugger, vos podes lanzar un proceso si queres con sus parametros... y eso mismo es una funcion, mas que una funcion, una buena porcion de codigo, que no solo lanza el proceso a partir de su nombre, sino que analiza los tipos de parametros y la cantidad...

en base a ese codigo se podria hacer una dll que lance procesos o funciones... pero esto es "basado en"... no hay una funcion lista que ya haga esto...

Title: Re: Direcciones de funciones
Post by: l1nk3rn3l on December 26, 2009, 05:16:28 PM
NO LO habia visto...

ok me sirve , gracias...   ;D