Hola gente,
Por fin despues de un problema de conexion, vuelvo a estar online despues de varios dias.
Lamentablemente no pude seguir con el porting a iOS por falta de conexion, para bajar cosas.
He seguido con el desarrollo igualmente y he añadido una de las features mas importantes para el lenguaje, para todo el futuro de las librerias y de los sistemas que tenemos pensado, o sea los TYPEDEFS.
Aqui pongo un test de lo que es su uso:
program _GMX_typedefs;
typedef
type my_color
byte a;
byte r;
byte g;
byte b;
my_color *next;
end
type my_info
int level;
string name;
end
type my_data
proc id_proc;
int value;
my_color color[255];
my_info info;
end
global
//local
//private
my_color *color_ptr;
my_color color_var;
my_color color_array[9];
my_data *data_ptr;
my_data data_var;
my_data data_array[3];
int data;
/*struct st[9];
int a, b, c;
string s;
int ba;
int ai[99];
my_data data[3];
end*/
begin
//color_var.r = 32;
//color_var.g = 64;
//color_var.b = 128;
typedef_dummy(&color_var, 0, 0);
color_var.next = &color_array[5];
color_var.next.r = 11;
color_var.next.g = 22;
color_var.next.b = 33;
color_array[3].r = 128;
color_array[3].g = 64;
color_array[3].b = 255;
//color_ptr = func(data_ptr);
color_ptr = &color_array[7];
color_ptr.r = 100;
color_ptr.g = 150;
color_ptr.b = 200;
//data_array[2].info.name = "Gemix Studio";
//data_ptr = &data_array[3];
//data_ptr.info.name = "The Best DIV-Like";
//func(data_ptr);
//proc(data_ptr);
//data_ptr.id_proc = proc(data_ptr);
//data_ptr.id_proc.data = 333;
//data = data_ptr.id_proc.data;
/*st.data[3].info.name = "The Best DIV-Like";
st.data[3].id_proc = proc(&st.data[3]);
st.data[3].id_proc.data = 333;
data = st.data[3].id_proc.data;*/
write_byte(0, 160, 10, 4, &color_var.r);
write_byte(0, 160, 20, 4, &color_var.g);
write_byte(0, 160, 30, 4, &color_var.b);
write_byte(0, 160, 50, 4, &color_array[3].r);
write_byte(0, 160, 60, 4, &color_array[3].g);
write_byte(0, 160, 70, 4, &color_array[3].b);
write_byte(0, 160, 90, 4, &color_var.next.r);
write_byte(0, 160, 100, 4, &color_var.next.g);
write_byte(0, 160, 110, 4, &color_var.next.b);
write_byte(0, 160, 130, 4, &color_ptr.r);
write_byte(0, 160, 140, 4, &color_ptr.g);
write_byte(0, 160, 150, 4, &color_ptr.b);
write_int(0, 160, 190, 4, &data);
repeat
frame;
until(key(_esc));
let_me_alone();
end
process proc(my_data *ptr_data)
public
data;
begin
write(0, 160, 170, 4, data_array[2].info.name);
write(0, 160, 180, 4, ptr_data.info.name);
loop
frame;
end
end
function my_color *func(my_data *ptr_data)
begin
write(0, 160, 170, 4, data_array[2].info.name);
write(0, 160, 180, 4, ptr_data.info.name);
end
Como se puede observar se permiten varias cosas:
- la creaciones de tipos complejos que soportan incluso punteros a si mismo (como my_color, util para crear listas dinamicas enlanzadas)
- la creacion de tipos complejos basados en otros tipos (como my_data)
- la creacion de datos variables, array y punteros en multiplas instancias como en:
my_color *color_ptr;
my_color color_var;
my_color color_array[9];
my_data *data_ptr;
my_data data_var;
my_data data_array[3];
- se permiten variables/arrays/punteros de tipo PROCESS en la declaracion (ej: proc id_proc en my_data)
- un PROCESS puede tener un parametro puntero a un tipo usuario
- una FUNCTION puede tener un parametro o un tipo de retorno a un tipo usuario
- una funcion predefinida del lenguaje puede tener un parametro o un tipo de retorno a un tipo usuario predefinido (ej: typedef_dummy);
Con esta feature se dota Gemix de una mayor potencia a la hora de crear librerias y features futuras y permite a los usuarios de poder crear proyectos mas largos que requieren uso de gran cantidad de datos.
Ahora voy a seguir con el porting a iOS, luego os informare.