¿Llamada a funciones no portables?

Started by josebita, November 18, 2012, 08:45:34 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

josebita

Estoy tratando de añadir ciertas funciones a mi versión de Bennu para Android que no tienen correspondencia directa en otros sistemas y me pregunto en qué forma puedo implementarlo de forma que sea lo más compatible posible con el código oficial.


Estoy hablando de cosas como llamar a las funciones que en Android y en iOS muestran el teclado virtual en pantalla, funciones que en Android devuelven la ruta adecuada al directorio para guardar los datos para cada aplicación (la ruta "directa" ha cambiado en Android 4.2 y la documentación lo que dice es que no hay que poner la ruta directamente sino preguntarla en cada ejecución) y cosas así.


Lo implemento en algún módulo no oficial o lo implemento a través de alguna función existente llamada de forma especial... ¿ideas?

SplinterGU

agrega un modulo nuevo, no te preocupes por la compatibilidad con otras plataformas... pronto voy a romper la necesidad de que todos los modulos que se carguen esten presentes realmente...

luego, para un correcto uso, se debera hacer...

if ( OS_ID == OS_ANDROID )
    funciones especiales
end


si quieres luego dentro de tu codigo chequea si estas o no en el operativo correcto o incluso si tienes disponible la funcionalidad o el hardware...

yo luego hare que puedan correr dcb aunque falten librerias, es obvio que si dentro del codigo no esta manejado los llamados de forma adecuada, el proceso reventara o saldra de forma limpia con algun error de "funcion no soportada" o algo asi... pero se podran cargar tranquilamente... asi es como hice funcionar el mvr en PC... ;)
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

josebita

Quote from: SplinterGU on November 18, 2012, 10:42:34 PM
agrega un modulo nuevo, no te preocupes por la compatibilidad con otras plataformas... pronto voy a romper la necesidad de que todos los modulos que se carguen esten presentes realmente...

luego, para un correcto uso, se debera hacer...

if ( OS_ID == OS_ANDROID )
    funciones especiales
end


si quieres luego dentro de tu codigo chequea si estas o no en el operativo correcto o incluso si tienes disponible la funcionalidad o el hardware...

yo luego hare que puedan correr dcb aunque falten librerias, es obvio que si dentro del codigo no esta manejado los llamados de forma adecuada, el proceso reventara o saldra de forma limpia con algun error de "funcion no soportada" o algo asi... pero se podran cargar tranquilamente... asi es como hice funcionar el mvr en PC... ;)
Muy interesante :) Lo haré así, entonces.

SplinterGU

si, la verdad que canse de tanta compatibilidad, cuando hay cosas que son muy especificas y es imposible compatibilizarlas, o no tiene sentido hacerlo, como el teclado en pantalla.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

josebita

#4
Quote from: SplinterGU on November 18, 2012, 11:03:15 PM
si, la verdad que canse de tanta compatibilidad, cuando hay cosas que son muy especificas y es imposible compatibilizarlas, o no tiene sentido hacerlo, como el teclado en pantalla.
Creo que sería muy interesante que fuera posible hacer algo parecido al "try" de python. De esa forma se podría agregar soporte dinamicamente a ciertas librerías sólo en caso de que estuvieran cargadas. Algo como:
try:
    // Tratar de abrir el teclado
    onscreenkeyboard_show();
except:
    // No se ha podido cargar, pero bennu no sale sino que deshabilitamos las funciones de teclado virtual de nuestro código.
    onscreenkeyboard_available = 0;



¿Sería posible?

SplinterGU

Download Lastest BennuGD Release: http://www.bennugd.org/node/2

KeoH

Un control de excepciones estaría bien. Aunque igual complicaria el uso para los novatos. Y un poquito de POO tampoco estaría mal xDDDDDD pedir es gratis :P

SplinterGU

demasiado complicado para mi, seria mucho trabajo.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

JaViS

Working on Anarkade. A couch multiplayer 2D shooter.

alex

Quote from: josebita on November 18, 2012, 11:45:54 PM
Quote from: SplinterGU on November 18, 2012, 11:03:15 PM
si, la verdad que canse de tanta compatibilidad, cuando hay cosas que son muy especificas y es imposible compatibilizarlas, o no tiene sentido hacerlo, como el teclado en pantalla.
Creo que sería muy interesante que fuera posible hacer algo parecido al "try" de python. De esa forma se podría agregar soporte dinamicamente a ciertas librerías sólo en caso de que estuvieran cargadas. Algo como:
try:
    // Tratar de abrir el teclado
    onscreenkeyboard_show();
except:
    // No se ha podido cargar, pero bennu no sale sino que deshabilitamos las funciones de teclado virtual de nuestro código.
    onscreenkeyboard_available = 0;



¿Sería posible?
no se yo soy muy novato en esto, pero, no seria algo como un if en el codigo de bennu, comprobar si se puede hacer la funcion.
Quote from: KeoH on November 19, 2012, 11:48:06 PM
Un control de excepciones estaría bien. Aunque igual complicaria el uso para los novatos. Y un poquito de POO tampoco estaría mal xDDDDDD pedir es gratis :P
Yo no lo veo tan complcado de aprender. De hecho, creo que lo acabo de pillar. xD

Splinter, seria algo como una comprobacion?, entonces seria comprobar cada vez que viene un try, comprobar si se puede realizar la accion que viene ahi. No parece muy dificil de implementar, bueno... no me deberia meter mucho porque yo se menos.


Tambien aparte de eso, creo que si lo que quieres hacer es en momento de compilación saber cosas del sistema, seria como con el preprocesador pero en momento de compilación. Como en el ejemplo de Splinter de antes.

SplinterGU

es que no entienden me parece lo que hace try... try no es solo comprobar si una funcion existe o no, try atrapa todas las excepciones en la ejecucion de algo... hacer eso en un codigo C no es solo meter un signal que atrape la señal, hay que hacer una pila de cosas y unos cuantos hooks a bajo nivel para hacer luego una recuperacion limpia del hilo de ejecucion, y esto tambien hay que considerar muchas cosas que no se estan teniendo en cuenta...

claro, a vista de un usuario es simple... "ey hombre! lo unico que quiero es que si pasa un error me capture la excepcion", puf, como si eso fuera simple...

y sin olvidar que la performance en general se vera afectada.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

alex

Quote from: SplinterGU on November 20, 2012, 06:15:08 PM
es que no entienden me parece lo que hace try... try no es solo comprobar si una funcion existe o no, try atrapa todas las excepciones en la ejecucion de algo... hacer eso en un codigo C no es solo meter un signal que atrape la señal, hay que hacer una pila de cosas y unos cuantos hooks a bajo nivel para hacer luego una recuperacion limpia del hilo de ejecucion, y esto tambien hay que considerar muchas cosas que no se estan teniendo en cuenta...

claro, a vista de un usuario es simple... "ey hombre! lo unico que quiero es que si pasa un error me capture la excepcion", puf, como si eso fuera simple...

y sin olvidar que la performance en general se vera afectada.
Offtopic: lo siento, no queria ofender con mi comentario... segun dices si parece complicado...
Lo que yo decia tambien es que se podia evitar usar try, y usar un if que te capture una variable que transmite el sistema.

KeoH

Dudo que haya cosas en este mundo q Splinter no pueda hacer en C xDDDD #soy_un_pelota

SplinterGU

Quote from: alex on November 20, 2012, 07:50:16 PM
Quote from: SplinterGU on November 20, 2012, 06:15:08 PM
es que no entienden me parece lo que hace try... try no es solo comprobar si una funcion existe o no, try atrapa todas las excepciones en la ejecucion de algo... hacer eso en un codigo C no es solo meter un signal que atrape la señal, hay que hacer una pila de cosas y unos cuantos hooks a bajo nivel para hacer luego una recuperacion limpia del hilo de ejecucion, y esto tambien hay que considerar muchas cosas que no se estan teniendo en cuenta...

claro, a vista de un usuario es simple... "ey hombre! lo unico que quiero es que si pasa un error me capture la excepcion", puf, como si eso fuera simple...

y sin olvidar que la performance en general se vera afectada.
Offtopic: lo siento, no queria ofender con mi comentario... segun dices si parece complicado...
Lo que yo decia tambien es que se podia evitar usar try, y usar un if que te capture una variable que transmite el sistema.


no me has ofendido, disculpame a mi si sono agresivo, pero es que no quiero que se mal interprete los motivos por lo que descarto esta feature.

Quote from: KeoH on November 20, 2012, 07:58:14 PM
Dudo que haya cosas en este mundo q Splinter no pueda hacer en C xDDDD #soy_un_pelota

lamentablemente no puedo hacerlo porque tengo muchas cosas por hacer en cola... si me dedicara a esto para vivir, podria poner 1000 features nuevas...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

KeoH

Quote from: SplinterGU on November 20, 2012, 09:55:26 PM

lamentablemente no puedo hacerlo porque tengo muchas cosas por hacer en cola... si me dedicara a esto para vivir, podria poner 1000 features nuevas...


Montamos un crowfounding en Kickstarter pa sacar pasta y que Splinter deje el trabajo y se dedique a Bennu??? ... estoy dando ideas ... una bola de plomo atada a su pié tambien seria buena idea jajajaajajjaa