eina-iterator: Add first reference example

This commit is contained in:
Andy Williams 2017-11-09 18:46:02 +00:00
parent 632662aeee
commit ad5287a9e3
3 changed files with 112 additions and 0 deletions

View File

@ -0,0 +1,13 @@
project(
'efl-reference-eina-iterator', 'c',
version : '0.0.1',
default_options: [ 'c_std=gnu99', 'warning_level=2' ],
meson_version : '>= 0.38.0')
eina = dependency('eina', version : '>=1.20.99')
efl = dependency('efl', version : '>=1.20.99')
elm = dependency('elementary', version : '>=1.20.99')
inc = include_directories('.')
subdir('src')

View File

@ -0,0 +1,87 @@
#define EFL_EO_API_SUPPORT 1
#define EFL_BETA_API_SUPPORT 1
#include <stdio.h>
#include <Eina.h>
#include <Efl.h>
#include <Elementary.h>
static Eina_Bool
_print_item(const void *container EINA_UNUSED, void *data, void *fdata EINA_UNUSED)
{
printf("%s\n", (char*)data);
return EINA_TRUE;
}
static void
_print_container(Eina_Iterator *it)
{
printf("--start--\n");
eina_iterator_foreach(it, _print_item, NULL);
printf("-- end --\n");
}
static Eina_Array *
_create_array()
{
const char *strings[] =
{
"name strings",
"husker",
"starbuck",
"boomer"
};
Eina_Array *array;
int i;
array = eina_array_new(4);
for (i = 0; i < 4; i++)
eina_array_push(array, strings[i]);
return array;
}
static Eina_List *
_create_list()
{
const char *more_strings[] = {
"sentence strings",
"what do your hear?",
"nothing but the rain",
"then grab your gun and bring the cat in"
};
Eina_List *list = NULL;
int i;
for (i = 0; i < 4; i++)
list = eina_list_append(list, more_strings[i]);
return list;
}
EAPI_MAIN void
efl_main(void *data EINA_UNUSED, const Efl_Event *ev EINA_UNUSED)
{
Eina_Array *array;
Eina_List *list;
Eina_Iterator *it;
array = _create_array();
it = eina_array_iterator_new(array);
_print_container(it);
eina_iterator_free(it);
eina_array_free(array);
list = _create_list();
it = eina_list_iterator_new(list);
_print_container(it);
eina_iterator_free(it);
eina_list_free(list);
efl_exit(0);
}
EFL_MAIN()

View File

@ -0,0 +1,12 @@
src = files([
'eina_iterator_main.c',
])
deps = [eina, efl, elm]
executable('efl_reference_eina_iterator', src,
dependencies : deps,
include_directories : inc,
install : true
)