eina_iterator_01.c
//Compile with:
//gcc -g eina_iterator_01.c -o eina_iterator_01 `pkg-config --cflags --libs eina`
#include <stdio.h>
#include <Eina.h>
print_one(const void *container, void *data, void *fdata)
{
printf("%s\n", (char*)data);
}
static void
print_eina_container(Eina_Iterator *it)
{
eina_iterator_foreach(it, print_one, NULL);
printf("\n");
}
int
main(int argc, char **argv)
{
const char *strings[] = {
"unintersting string", "husker", "starbuck", "husker"
};
const char *more_strings[] = {
"very unintersting string",
"what do your hear?",
"nothing but the rain",
"then grab your gun and bring the cat in"
};
Eina_Array *array;
Eina_List *list = NULL;
Eina_Iterator *it;
unsigned short int i;
char *uninteresting;
eina_init();
array = eina_array_new(4);
for (i = 0; i < 4; i++)
{
eina_array_push(array, strings[i]);
list = eina_list_append(list, more_strings[i]);
}
it = eina_array_iterator_new(array);
eina_iterator_next(it, &uninteresting);
print_eina_container(it);
eina_iterator_free(it);
it = eina_list_iterator_new(list);
eina_iterator_next(it, &uninteresting);
print_eina_container(it);
eina_iterator_free(it);
eina_list_free(list);
return 0;
}
Eina Utility library.
Eina_Array * eina_array_new(unsigned int step)
Create a new array.
Definition eina_array.c:265
Eina_Iterator * eina_array_iterator_new(const Eina_Array *array)
Returned a new iterator associated to an array.
Definition eina_array.c:434
Eina_Bool eina_iterator_next(Eina_Iterator *iterator, void **data)
Return the value of the current element and go to the next one.
Definition eina_iterator.c:116
void * eina_iterator_container_get(Eina_Iterator *iterator)
Return the container of an iterator.
Definition eina_iterator.c:107
void eina_iterator_foreach(Eina_Iterator *iterator, Eina_Each_Cb callback, const void *fdata)
Iterate over the container and execute a callback on each element.
Definition eina_iterator.c:128
struct _Eina_Iterator Eina_Iterator
Abstract type for iterators.
Definition eina_iterator.h:126
void eina_iterator_free(Eina_Iterator *iterator)
Free an iterator.
Definition eina_iterator.c:96
Eina_Iterator * eina_list_iterator_new(const Eina_List *list)
Returned a new iterator associated to a list.
Definition eina_list.c:1409
Eina_List * eina_list_free(Eina_List *list)
Free an entire list and all the nodes, ignoring the data contained.
Definition eina_list.c:754
struct _Eina_List Eina_List
Type for a generic double linked list.
Definition eina_list.h:307
Eina_List * eina_list_append(Eina_List *list, const void *data)
Append the given data to the given linked list.
Definition eina_list.c:530