Bennu Game Development

Foros en Español => Sugerencias => Mensaje iniciado por: l1nk3rn3l en Diciembre 23, 2009, 03:36:02 pm

Título: Direcciones de funciones
Publicado por: l1nk3rn3l en Diciembre 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?

 
Título: Re: Direcciones de funciones
Publicado por: Windgate en Diciembre 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
Título: Re: Direcciones de funciones
Publicado por: SplinterGU en Diciembre 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.
Título: Re: Direcciones de funciones
Publicado por: Drumpi en Diciembre 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?
Título: Re: Direcciones de funciones
Publicado por: Windgate en Diciembre 24, 2009, 03:03:48 am
¿Ejecutar a partir del nombre? ¿Entonces un parametro de tipo string podria indicar la funcion a ejecutar?
Título: Re: Direcciones de funciones
Publicado por: SplinterGU en Diciembre 25, 2009, 02:06:03 am
claro, como lo hace el modulo de debug...
Título: Re: Direcciones de funciones
Publicado por: Windgate en Diciembre 25, 2009, 01:11:43 pm
Código: [Seleccionar]
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
Título: Re: Direcciones de funciones
Publicado por: SplinterGU en Diciembre 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...

Título: Re: Direcciones de funciones
Publicado por: l1nk3rn3l en Diciembre 26, 2009, 05:16:28 pm
NO LO habia visto...

ok me sirve , gracias...   ;D