diff --git a/ChangeLog b/ChangeLog index d3aaa09043..0c3403bae1 100644 --- 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 db04703aca..706436f1e6 100644 --- 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 diff --git a/src/lib/eina/eina_list.c b/src/lib/eina/eina_list.c index 4e217dd9a6..5c8b1f8c41 100644 --- a/src/lib/eina/eina_list.c +++ b/src/lib/eina/eina_list.c @@ -60,6 +60,7 @@ #include #include #include +#include #ifdef HAVE_EVIL # include diff --git a/src/lib/eina/eina_list.h b/src/lib/eina/eina_list.h index e70530bdb3..ebae94a66f 100644 --- a/src/lib/eina/eina_list.h +++ b/src/lib/eina/eina_list.h @@ -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. @@ -921,6 +920,27 @@ EAPI Eina_List *eina_list_clone(const Eina_List *list) EINA_WARN_UNUS EAPI Eina_List *eina_list_sort(Eina_List *list, unsigned int limit, Eina_Compare_Cb func) EINA_ARG_NONNULL(3) EINA_WARN_UNUSED_RESULT; +/** + * @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. *