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>
static Eina_Bool
print_one(const void *container EINA_UNUSED, void *data, void *fdata EINA_UNUSED)
{
printf("%s\n", (char*)data);
return EINA_TRUE;
}
static void
print_eina_container(Eina_Iterator *it)
{
eina_iterator_foreach(it, print_one, NULL);
printf("\n");
}
int
main(int argc EINA_UNUSED, char **argv EINA_UNUSED)
{
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;
unsigned short int i;
char *uninteresting;
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]);
}
if (!eina_iterator_next(it, (void **)&uninteresting))
return -1;
print_eina_container(it);
if (!eina_iterator_next(it, (void **)&uninteresting))
return -1;
print_eina_container(it);
return 0;
}
Eina Utility library.
EINA_API Eina_Iterator * eina_array_iterator_new(const Eina_Array *array)
Gets a new iterator associated with an array.
Definition: eina_array.c:394
EINA_API void eina_array_free(Eina_Array *array)
Frees an array.
Definition: eina_array.c:295
static Eina_Bool eina_array_push(Eina_Array *array, const void *data)
Appends a data item to an array.
EINA_API Eina_Array * eina_array_new(unsigned int step)
Creates a new array.
Definition: eina_array.c:276
EINA_API void eina_iterator_free(Eina_Iterator *iterator)
Frees an iterator.
Definition: eina_iterator.c:98
EINA_API void * eina_iterator_container_get(Eina_Iterator *iterator)
Returns the container of an iterator.
Definition: eina_iterator.c:109
EINA_API Eina_Bool eina_iterator_next(Eina_Iterator *iterator, void **data)
Returns the value of the current element and go to the next one.
Definition: eina_iterator.c:118
EINA_API void eina_iterator_foreach(Eina_Iterator *iterator, Eina_Each_Cb cb, const void *fdata)
Iterates over the container and execute a callback on each element.
Definition: eina_iterator.c:130
EINA_API Eina_List * eina_list_append(Eina_List *list, const void *data)
Appends the given data to the given linked list.
Definition: eina_list.c:584
EINA_API Eina_List * eina_list_free(Eina_List *list)
Frees an entire list and all the nodes, ignoring the data contained.
Definition: eina_list.c:823
EINA_API Eina_Iterator * eina_list_iterator_new(const Eina_List *list)
Returns a new iterator associated with a list.
Definition: eina_list.c:1574
EINA_API int eina_shutdown(void)
Shuts down the Eina library.
Definition: eina_main.c:379
EINA_API int eina_init(void)
Initializes the Eina library.
Definition: eina_main.c:291
#define EINA_TRUE
boolean value TRUE (numerical value 1)
Definition: eina_types.h:539
unsigned char Eina_Bool
Type to mimic a boolean.
Definition: eina_types.h:527
#define EINA_UNUSED
Used to indicate that a function parameter is purposely unused.
Definition: eina_types.h:339
Type for an array of data.
Definition: eina_array.h:229
structure of an iterator
Definition: eina_iterator.h:159
Type for a generic double linked list.
Definition: eina_list.h:318