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,

-- 


Reply via email to