#include <commons/collections/list.h>
Más...
Ir al código fuente de este archivo.
Estructuras de datos | |
struct | t_list |
Estructura de una lista enlazada. Inicializar con list_create() Más... | |
struct | t_list_iterator |
Iterador de listas. Inicializar con list_iterator_create() Más... | |
Funciones | |
t_list * | list_create (void) |
Crea una lista. Más... | |
int | list_add (t_list *self, void *element) |
Agrega un elemento al final de la lista. Más... | |
void | list_destroy (t_list *self) |
Destruye una lista sin liberar los elementos contenidos en los nodos. Más... | |
void | list_destroy_and_destroy_elements (t_list *self, void(*element_destroyer)(void *)) |
Destruye una lista y sus elementos contenidos llamando a la función element_destroyer sobre cada uno de ellos. Más... | |
void | list_add_in_index (t_list *self, int index, void *element) |
Agrega un elemento en una posicion determinada de la lista. Más... | |
int | list_add_sorted (t_list *self, void *data, bool(*comparator)(void *, void *)) |
Agrega un elemento a una lista ordenada, manteniendo el orden definido por el comparador. Más... | |
void | list_add_all (t_list *self, t_list *other) |
Agrega todos los elementos de la segunda lista al final de la primera. Más... | |
void * | list_get (t_list *self, int index) |
Retorna el contenido de una posicion determinada de la lista. Más... | |
void * | list_get_minimum (t_list *self, void *(*minimum)(void *, void *)) |
Retorna el minimo de la lista según el comparador. Más... | |
void * | list_get_maximum (t_list *self, void *(*maximum)(void *, void *)) |
Retorna el maximo de la lista según el comparador. Más... | |
t_list * | list_take (t_list *self, int count) |
Retorna una nueva lista con los primeros n elementos. Más... | |
t_list * | list_slice (t_list *self, int start, int count) |
Retorna una nueva lista con los primeros n elementos partiendo desde el índice indicado. Más... | |
t_list * | list_take_and_remove (t_list *self, int count) |
Retorna una nueva lista con los primeros n elementos, eliminando del origen estos elementos. Más... | |
t_list * | list_slice_and_remove (t_list *self, int start, int count) |
Retorna una nueva lista con los primeros n elementos partiendo desde el índice indicado, eliminando del origen estos elementos. Más... | |
t_list * | list_filter (t_list *self, bool(*condition)(void *)) |
Retorna una nueva lista con los elementos que cumplen la condicion. Más... | |
t_list * | list_map (t_list *self, void *(*transformer)(void *)) |
Retorna una nueva lista con los elementos transformados. Más... | |
t_list * | list_flatten (t_list *self) |
Retorna una nueva lista con los elementos de la lista de listas recibida. Más... | |
void * | list_replace (t_list *self, int index, void *element) |
Coloca un elemento en una de la posiciones de la lista retornando el valor anterior. Más... | |
void * | list_replace_by_condition (t_list *self, bool(*condition)(void *), void *element) |
Coloca un elemento en la posición de la lista que cumpla con la condición, retornando el valor anterior. Más... | |
void | list_replace_and_destroy_element (t_list *self, int index, void *element, void(*element_destroyer)(void *)) |
Coloca un valor en una de la posiciones de la lista liberando el valor anterior. Más... | |
void * | list_remove (t_list *self, int index) |
Remueve un elemento de la lista de una determinada posicion y lo retorna. Más... | |
bool | list_remove_element (t_list *self, void *element) |
Remueve al elemento de la lista recibido por parámetro. Más... | |
void | list_remove_and_destroy_element (t_list *self, int index, void(*element_destroyer)(void *)) |
Remueve un elemento de la lista de una determinada posicion y libera la memoria. Más... | |
void * | list_remove_by_condition (t_list *self, bool(*condition)(void *)) |
Remueve el primer elemento de la lista que haga que condition devuelva true . Más... | |
void | list_remove_and_destroy_by_condition (t_list *self, bool(*condition)(void *), void(*element_destroyer)(void *)) |
Remueve y libera el primer elemento de la lista que haga que condition devuelva true . Más... | |
void | list_remove_and_destroy_all_by_condition (t_list *self, bool(*condition)(void *), void(*element_destroyer)(void *)) |
Remueve y destruye todos los elementos de la lista que hagan que condition devuelva true . Más... | |
void | list_clean (t_list *self) |
Quita todos los elementos de la lista, sin liberarlos. Más... | |
void | list_clean_and_destroy_elements (t_list *self, void(*element_destroyer)(void *)) |
Quita todos los elementos de la lista y los libera llamando a la función element_destroyer sobre cada uno de ellos. Más... | |
void | list_iterate (t_list *self, void(*closure)(void *)) |
Itera la lista llamando al closure por cada elemento. En caso de querer modificar la lista durante la iteración, utilizar list_iterator_create() para recorrerla externamente. Más... | |
void * | list_find (t_list *self, bool(*closure)(void *)) |
Retorna el primer valor encontrado, el cual haga que condition devuelva true , o NULL en caso de no encontrar ninguno. Más... | |
int | list_size (t_list *self) |
Retorna el tamaño de la lista. Más... | |
bool | list_is_empty (t_list *self) |
Verifica si la lista esta vacia. Más... | |
void | list_sort (t_list *self, bool(*comparator)(void *, void *)) |
Ordena la lista segun el comparador. Más... | |
t_list * | list_sorted (t_list *self, bool(*comparator)(void *, void *)) |
Retorna una lista nueva ordenada segun el comparador. Más... | |
int | list_count_satisfying (t_list *self, bool(*condition)(void *)) |
Cuenta la cantidad de elementos de la lista que devuelven true al aplicarles la condición. Más... | |
bool | list_any_satisfy (t_list *self, bool(*condition)(void *)) |
Determina si algún elemento de la lista devuelve true al aplicarle la condición. Más... | |
bool | list_all_satisfy (t_list *self, bool(*condition)(void *)) |
Determina si todos los elementos de la lista devuelven true al aplicarles la condición. Más... | |
t_list * | list_duplicate (t_list *self) |
Crea una lista nueva con los mismos elementos que la original. Más... | |
void * | list_fold (t_list *self, void *seed, void *(*operation)(void *, void *)) |
Devuelve un valor que resulta de aplicar la operacion entre todos los elementos de la lista, partiendo desde el primero. Más... | |
void * | list_fold1 (t_list *self, void *(*operation)(void *, void *)) |
Devuelve un valor que resulta de aplicar la operacion entre todos los elementos de la lista, tomando al primero como semilla y partiendo desde el segundo (si existe). Más... | |
t_list_iterator * | list_iterator_create (t_list *list) |
Inicializa una iteración externa de la lista. Permite recorrer la lista y modificarla al mismo tiempo. En caso de no querer modificar la lista ni romper la iteración, considerar utilizar list_iterate() . Más... | |
bool | list_iterator_has_next (t_list_iterator *iterator) |
Devuelve true si quedan elementos de la lista por recorrer. Más... | |
void * | list_iterator_next (t_list_iterator *iterator) |
Avanza hacia el siguiente elemento a iterar de la lista y lo devuelve. Más... | |
int | list_iterator_index (t_list_iterator *iterator) |
Devuelve el índice del elemento actual de la iteración. Más... | |
void | list_iterator_add (t_list_iterator *iterator, void *data) |
Agrega a la lista un elemento delante del actual y detrás del siguiente. Luego, avanza hacia el elemento agregado. Más... | |
void | list_iterator_remove (t_list_iterator *iterator) |
Remueve de la lista al elemento actual de la iteración. Más... | |
void | list_iterator_destroy (t_list_iterator *iterator) |
Finaliza la instancia de iteración externa liberando sus recursos. Más... | |
#include <commons/collections/list.h>
t_list* list_create | ( | void | ) |
Crea una lista.
list_destroy()
si se quiere liberar la lista pero no los elementos que contiene.list_destroy_and_destroy_elements()
si se quiere liberar la lista con los elementos que contieneEjemplo de uso:
int list_add | ( | t_list * | self, |
void * | element | ||
) |
Agrega un elemento al final de la lista.
element | El elemento a agregar. Este elemento pasará a pertenecer a la lista, por lo que no debe ser liberado por fuera de ésta. |
Ejemplo de uso:
void list_destroy | ( | t_list * | self | ) |
Destruye una lista sin liberar los elementos contenidos en los nodos.
Ejemplo de uso:
void list_destroy_and_destroy_elements | ( | t_list * | self, |
void(*)(void *) | element_destroyer | ||
) |
Destruye una lista y sus elementos contenidos llamando a la función element_destroyer
sobre cada uno de ellos.
list_destroy()
.Ejemplo de uso:
void list_add_in_index | ( | t_list * | self, |
int | index, | ||
void * | element | ||
) |
Agrega un elemento en una posicion determinada de la lista.
index | La posicion en la que se quiere agregar el elemento |
element | El elemento a agregar. Este elemento pasará a pertenecer a la lista, por lo que no debe ser liberado por fuera de ésta. |
Ejemplo de uso:
int list_add_sorted | ( | t_list * | self, |
void * | data, | ||
bool(*)(void *, void *) | comparator | ||
) |
Agrega un elemento a una lista ordenada, manteniendo el orden definido por el comparador.
data | El elemento a agregar. Este elemento pasará a pertenecer a la lista, por lo que no debe ser liberado por fuera de ésta. |
comparator | Funcion que compara dos elementos. Debe devolver true si el primer parametro debe aparecer antes que el segundo en la lista |
Ejemplo de uso:
Agrega todos los elementos de la segunda lista al final de la primera.
self | La lista a la que se le agregarán los elementos. |
other | La lista de la que se tomarán los elementos. Dichos elementos pasarán a pertenecer a ambas listas a la vez. |
Ejemplo de uso:
void* list_get | ( | t_list * | self, |
int | index | ||
) |
Retorna el contenido de una posicion determinada de la lista.
Ejemplo de uso:
void* list_get_minimum | ( | t_list * | self, |
void *(*)(void *, void *) | minimum | ||
) |
Retorna el minimo de la lista según el comparador.
minimum | Funcion que compara dos elementos. Debe devolver el menor de los dos |
Ejemplo de uso:
void* list_get_maximum | ( | t_list * | self, |
void *(*)(void *, void *) | maximum | ||
) |
Retorna el maximo de la lista según el comparador.
maximum | Funcion que compara dos elementos. Debe devolver el mayor de los dos |
Ejemplo de uso:
Retorna una nueva lista con los primeros n elementos.
count | Cantidad máxima de elementos a tomar. |
Ejemplo de uso:
Retorna una nueva lista con los primeros n elementos partiendo desde el índice indicado.
start | Índice desde el cual se tomarán los elementos. |
count | Cantidad máxima de elementos a tomar. |
Ejemplo de uso:
Retorna una nueva lista con los primeros n elementos, eliminando del origen estos elementos.
count | Cantidad máxima de elementos a tomar. |
Ejemplo de uso:
Retorna una nueva lista con los primeros n elementos partiendo desde el índice indicado, eliminando del origen estos elementos.
start | Índice desde el cual se tomarán los elementos. |
count | Cantidad máxima de elementos a tomar. |
Ejemplo de uso:
Retorna una nueva lista con los elementos que cumplen la condicion.
Ejemplo de uso:
Retorna una nueva lista con los elementos transformados.
transformer
.Ejemplo de uso:
Retorna una nueva lista con los elementos de la lista de listas recibida.
Ejemplo de uso:
void* list_replace | ( | t_list * | self, |
int | index, | ||
void * | element | ||
) |
Coloca un elemento en una de la posiciones de la lista retornando el valor anterior.
index | La posicion en la que se quiere agregar el elemento |
element | El elemento a agregar. Este elemento pasará a pertenecer a la lista, por lo que no debe ser liberado por fuera de ésta. |
Ejemplo de uso:
void* list_replace_by_condition | ( | t_list * | self, |
bool(*)(void *) | condition, | ||
void * | element | ||
) |
Coloca un elemento en la posición de la lista que cumpla con la condición, retornando el valor anterior.
condition | Función que recibe un elemento y devuelve true si es el elemento a reemplazar. |
element | El elemento a agregar. Este elemento pasará a pertenecer a la lista, por lo que no debe ser liberado por fuera de ésta. |
Ejemplo de uso:
void list_replace_and_destroy_element | ( | t_list * | self, |
int | index, | ||
void * | element, | ||
void(*)(void *) | element_destroyer | ||
) |
Coloca un valor en una de la posiciones de la lista liberando el valor anterior.
index | La posicion en la que se quiere agregar el elemento |
element | El elemento a agregar. Este elemento pasará a pertenecer a la lista, por lo que no debe ser liberado por fuera de ésta. |
element_destroyer | Función que se encargará de liberar el valor reemplazado. |
Ejemplo de uso:
void* list_remove | ( | t_list * | self, |
int | index | ||
) |
Remueve un elemento de la lista de una determinada posicion y lo retorna.
index | La posicion del elemento a remover |
Ejemplo de uso:
bool list_remove_element | ( | t_list * | self, |
void * | element | ||
) |
Remueve al elemento de la lista recibido por parámetro.
element | El elemento a remover. Al ser removido, ya estaremos seguros de que no pertenece a la lista, por lo que debe ser liberado una vez que no se lo necesite. |
true
si el elemento fue removido, false
en caso de no haber sido encontrado.Ejemplo de uso:
void list_remove_and_destroy_element | ( | t_list * | self, |
int | index, | ||
void(*)(void *) | element_destroyer | ||
) |
Remueve un elemento de la lista de una determinada posicion y libera la memoria.
index | La posicion del elemento a remover |
element_destroyer | Función que se encargará de liberar el valor |
Ejemplo de uso:
void* list_remove_by_condition | ( | t_list * | self, |
bool(*)(void *) | condition | ||
) |
Remueve el primer elemento de la lista que haga que condition devuelva true
.
Ejemplo de uso:
void list_remove_and_destroy_by_condition | ( | t_list * | self, |
bool(*)(void *) | condition, | ||
void(*)(void *) | element_destroyer | ||
) |
Remueve y libera el primer elemento de la lista que haga que condition devuelva true
.
element_destroyer | Función que se encargará de liberar el valor |
Ejemplo de uso:
void list_remove_and_destroy_all_by_condition | ( | t_list * | self, |
bool(*)(void *) | condition, | ||
void(*)(void *) | element_destroyer | ||
) |
Remueve y destruye todos los elementos de la lista que hagan que condition devuelva true
.
element_destroyer | Función que se encargará de liberar cada valor |
Ejemplo de uso:
void list_clean | ( | t_list * | self | ) |
Quita todos los elementos de la lista, sin liberarlos.
Ejemplo de uso:
void list_clean_and_destroy_elements | ( | t_list * | self, |
void(*)(void *) | element_destroyer | ||
) |
Quita todos los elementos de la lista y los libera llamando a la función element_destroyer
sobre cada uno de ellos.
list_clean()
.Ejemplo de uso:
void list_iterate | ( | t_list * | self, |
void(*)(void *) | closure | ||
) |
Itera la lista llamando al closure por cada elemento. En caso de querer modificar la lista durante la iteración, utilizar list_iterator_create()
para recorrerla externamente.
Ejemplo de uso:
void* list_find | ( | t_list * | self, |
bool(*)(void *) | closure | ||
) |
Retorna el primer valor encontrado, el cual haga que condition devuelva true
, o NULL en caso de no encontrar ninguno.
Ejemplo de uso:
int list_size | ( | t_list * | self | ) |
Retorna el tamaño de la lista.
Ejemplo de uso:
bool list_is_empty | ( | t_list * | self | ) |
Verifica si la lista esta vacia.
Ejemplo de uso:
void list_sort | ( | t_list * | self, |
bool(*)(void *, void *) | comparator | ||
) |
Ordena la lista segun el comparador.
comparator | Funcion que compara dos elementos. Debe devolver true si el primer parametro debe aparecer antes que el segundo en la lista |
Ejemplo de uso:
Retorna una lista nueva ordenada segun el comparador.
comparator | Funcion que compara dos elementos. Debe devolver true si el primer parametro debe aparecer antes que el segundo en la lista |
Ejemplo de uso:
int list_count_satisfying | ( | t_list * | self, |
bool(*)(void *) | condition | ||
) |
Cuenta la cantidad de elementos de la lista que devuelven true al aplicarles la condición.
Ejemplo de uso:
bool list_any_satisfy | ( | t_list * | self, |
bool(*)(void *) | condition | ||
) |
Determina si algún elemento de la lista devuelve true al aplicarle la condición.
Ejemplo de uso:
bool list_all_satisfy | ( | t_list * | self, |
bool(*)(void *) | condition | ||
) |
Determina si todos los elementos de la lista devuelven true al aplicarles la condición.
Ejemplo de uso:
Crea una lista nueva con los mismos elementos que la original.
Ejemplo de uso:
void* list_fold | ( | t_list * | self, |
void * | seed, | ||
void *(*)(void *, void *) | operation | ||
) |
Devuelve un valor que resulta de aplicar la operacion entre todos los elementos de la lista, partiendo desde el primero.
seed | Valor inicial para el primer parámetro de la operación. |
operation | Funcion que recibe dos valores: El primero es el resultado de la operación anterior y el segundo es el siguiente elemento de la lista. Debe devolver un valor del mismo tipo que el inicial. |
Ejemplo de uso:
void* list_fold1 | ( | t_list * | self, |
void *(*)(void *, void *) | operation | ||
) |
Devuelve un valor que resulta de aplicar la operacion entre todos los elementos de la lista, tomando al primero como semilla y partiendo desde el segundo (si existe).
operation | Funcion que recibe dos valores del tipo de los elementos de la lista y devuelve otro valor del mismo tipo. |
Ejemplo de uso:
t_list_iterator* list_iterator_create | ( | t_list * | list | ) |
Inicializa una iteración externa de la lista. Permite recorrer la lista y modificarla al mismo tiempo. En caso de no querer modificar la lista ni romper la iteración, considerar utilizar list_iterate()
.
list_iterator_destroy()
una vez finalizada la iteración.Ejemplo de uso:
bool list_iterator_has_next | ( | t_list_iterator * | iterator | ) |
Devuelve true si quedan elementos de la lista por recorrer.
void* list_iterator_next | ( | t_list_iterator * | iterator | ) |
Avanza hacia el siguiente elemento a iterar de la lista y lo devuelve.
list_iterator_remove()
. int list_iterator_index | ( | t_list_iterator * | iterator | ) |
Devuelve el índice del elemento actual de la iteración.
void list_iterator_add | ( | t_list_iterator * | iterator, |
void * | data | ||
) |
Agrega a la lista un elemento delante del actual y detrás del siguiente. Luego, avanza hacia el elemento agregado.
data | El elemento a agregar. Este elemento pasará a pertenecer a la lista, por lo que no debe ser liberado por fuera de ésta. |
void list_iterator_remove | ( | t_list_iterator * | iterator | ) |
Remueve de la lista al elemento actual de la iteración.
list_iterator_next()
y dejará de pertenecer a la lista, por lo que debe ser liberado una vez que no se lo necesite. void list_iterator_destroy | ( | t_list_iterator * | iterator | ) |
Finaliza la instancia de iteración externa liberando sus recursos.