[Slabot-devel] (no subject)
iobrain
iobrain at gmail.com
Sat Jun 23 19:33:53 CEST 2007
Acabo de hacer el commit del modulo de las listas doblemente
enlazadas. Aun no esta terminado, me quedan funciones que implementar
pero trabajare en ello. De momento podeis ir haciendo uso de ellas, la
interfaz de lo que esta no creo que se cambie. Si encontrais algun bug
en ellas avisadme y yo lo correjire.
El unico tipo que debeis conocer es ListType. Y creo que el nombre
deja bastante claro lo que representa. Todas las funciones haran uso
de estos tipos en forma de puntero, para asi aligerar el paso de los
parametros.
Para hacerlo funcionar: cread un tipo ListType*, le asignais el valor
devuelto por la funcion list_create. Este es su prototipo:
ListType* list_create (int type,
int (*sort),
void (*free),
void* (*dup));
Donde:
- type, es un campo con flags que indiquen el campo de la
lista, de momento se acepta LIST_TYPE_UNIQUE, lo que hara que
la lista no acepte valores repetidos.
- sort debe ser una funcion, recibe 2 objetos y devuelve -1 si
el primer elemento es menor. 0 si son iguales y 1 si el
segundo es menor.
- free recibe como argumento el objeto de un nodo y debe liberarlo.
- dup, es otra funcion. Esta debe devolver una replica del
objeto que recibe como argumento.
Luego, para manejar esta lista tenemos las siguientes funciones de momento:
void list_add (ListType*, void*);
void list_delete (ListType*, void*);
void list_rebind (ListType*);
void* list_get (ListType*);
int list_count (ListType*);
void list_destroy (ListType*);
Espero que no resulte demasiado complejo y que os sea util. Cualquier
duda que tengais, bug que encontreis, o funcion que veais util
comentadmelo porfavor.
Happy hacking! :)
--
Programming in Lisp is like playing with the primordial forces of the
universe. It feels like lightning between your fingertips. No other
language even feels close. — Glenn Ehrlich
More information about the Slabot-devel
mailing list