eina: add eina_list_shuffle
authorJérémy Zurcher <jeremy@asynk.ch>
Wed, 20 Mar 2013 11:19:13 +0000 (12:19 +0100)
committerJérémy Zurcher <jeremy@asynk.ch>
Wed, 20 Mar 2013 11:19:13 +0000 (12:19 +0100)
Summary: add uniform shuffle to Eina_List

Reviewers: cedric

Differential Revision: https://phab.enlightenment.org/D27

ChangeLog
NEWS
src/lib/eina/eina_list.c
src/lib/eina/eina_list.h

index d3aaa09..0c3403b 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2013-03-20  Jérémy Zurcher (jeyzu)
+
+        * Eina: Add eina_list_shuffle
+
 2013-03-19  Mike Blumenkrantz
 
         * Fix magic failure in eina_value_array_count when array has not been allocated
diff --git a/NEWS b/NEWS
index db04703..706436f 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -6,6 +6,7 @@ Changes since 1.7.0:
 --------------------
 
 Additions:
+    * Add eina_list_shuffle
     * Add multiple font draws support to engines
     * eina :
      - Add DOCTYPE children parsing in eina_simple_xml
index 4e217dd..5c8b1f8 100644 (file)
@@ -60,6 +60,7 @@
 #include <stdlib.h>
 #include <stdio.h>
 #include <string.h>
+#include <time.h>
 
 #ifdef HAVE_EVIL
 # include <Evil.h>
index e70530b..ebae94a 100644 (file)
@@ -886,8 +886,7 @@ EAPI Eina_List            *eina_list_clone(const Eina_List *list) EINA_WARN_UNUS
  * nodes.
  * @return the new head of list.
  *
- * This function sorts @p list. @p size if the number of the first
- * element to sort. If @p limit is 0 or greater than the number of
+ * This function sorts @p list. If @p limit is 0 or greater than the number of
  * elements in @p list, all the elements are sorted. @p func is used to
  * compare two elements of @p list. If @p func is @c NULL, this function returns
  * @p list.
@@ -922,6 +921,27 @@ EAPI Eina_List            *eina_list_sort(Eina_List *list, unsigned int limit, E
 
 
 /**
+ * @brief Shuffle list.
+ *
+ * @param list The list handle to shuffle.
+ * @param func A function pointer that can return an int between 2 inclusives values
+ * @return the new head of list.
+ *
+ * This function shuffles @p list.
+ * @p func is used to generate random list indexes within the range of
+ * unshuffled list items. If @p func is @c NULL, rand is used.
+ *
+ * @note @b in-place: this will change the given list, so you should
+ * now point to the new list head that is returned by this function.
+ *
+ * @since 1.8
+ *
+ * @warning @p list must be a pointer to the first element of the list.
+ */
+EAPI Eina_List            *eina_list_shuffle(Eina_List *list, Eina_Random_Cb func) EINA_WARN_UNUSED_RESULT;
+
+
+/**
  * @brief Merge two list.
  *
  * @param left Head list to merge.