ajwillia-ms pushed a commit to branch master. http://git.enlightenment.org/tools/examples.git/commit/?id=9d06cb592388e9454c5181b0f4fadbabcde5afd9
commit 9d06cb592388e9454c5181b0f4fadbabcde5afd9 Author: Andy Williams <a...@andywilliams.me> Date: Tue Nov 14 14:45:44 2017 +0000 eina: Add a list reference example --- reference/c/eina/src/eina_list_main.c | 74 +++++++++++++++++++++++++++++++++++ reference/c/eina/src/meson.build | 7 ++++ 2 files changed, 81 insertions(+) diff --git a/reference/c/eina/src/eina_list_main.c b/reference/c/eina/src/eina_list_main.c new file mode 100644 index 0000000..22fd136 --- /dev/null +++ b/reference/c/eina/src/eina_list_main.c @@ -0,0 +1,74 @@ +#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_List * +_list_create() +{ + Eina_List *list = NULL; + + list = eina_list_append(list, "Adama"); + list = eina_list_append(list, "Baltar"); + list = eina_list_append(list, "Roslin"); + + return list; +} + +static void +_list_free(Eina_List *list) +{ + // here we do not need to use EINA_LIST_FREE as our data is not leaking + eina_list_free(list); +} + +EAPI_MAIN void +efl_main(void *data EINA_UNUSED, const Efl_Event *ev EINA_UNUSED) +{ + Eina_List *list, *item, *sorted; + void *item_data; + + list = _list_create(); + + // print our list with a simple foreach + printf("List size: %d\n", eina_list_count(list)); + printf("List content:\n"); + EINA_LIST_FOREACH(list, item, item_data) + printf(" %s\n", (char*)item_data); + + // insert some more elements + list = eina_list_prepend(list, "Cain"); + list = eina_list_prepend_relative(list, "Tigh", "Baltar"); + + printf("New list content:\n"); + EINA_LIST_FOREACH(list, item, item_data) + printf(" %s\n", (char*)item_data); + + // promote an item to the top of the list + list = eina_list_promote_list(list, eina_list_nth_list(list, 1)); + list = eina_list_remove(list, "Cain"); + + printf("List content after promotion:\n"); + EINA_LIST_FOREACH(list, item, item_data) + printf(" %s\n", (char*)item_data); + + // we can sort the list with any callback, here we use strcmp + sorted = eina_list_sort(list, 0, (Eina_Compare_Cb)strcmp); + printf("List content sorted:\n"); + EINA_LIST_FOREACH(sorted, item, item_data) + printf(" %s\n", (char*)item_data); + + // and foreach can be in reverse too + printf("List content reverse sorted:\n"); + EINA_LIST_REVERSE_FOREACH(sorted, item, item_data) + printf(" %s\n", (char*)item_data); + + _list_free(list); + + efl_exit(0); +} +EFL_MAIN() diff --git a/reference/c/eina/src/meson.build b/reference/c/eina/src/meson.build index 0e132d4..06e607f 100644 --- a/reference/c/eina/src/meson.build +++ b/reference/c/eina/src/meson.build @@ -7,6 +7,13 @@ executable('efl_reference_eina_array', install : true ) +executable('efl_reference_eina_list', + files(['eina_list_main.c']), + dependencies : deps, + include_directories : inc, + install : true +) + executable('efl_reference_eina_iterator', files(['eina_iterator_main.c']), dependencies : deps, --