From: Matthias Clasen Date: Fri, 26 Dec 2003 01:04:12 +0000 (+0000) Subject: New function to call a function for each element of a GPtrArray. (#114790) X-Git-Url: http://git.openbox.org/?a=commitdiff_plain;h=e09de99eb52e18eb00c9ee7f94544c07526c2c6d;p=dana%2Fcg-glib.git New function to call a function for each element of a GPtrArray. (#114790) Fri Dec 26 02:03:58 2003 Matthias Clasen * glib/garray.[hc] (g_ptr_array_foreach): New function to call a function for each element of a GPtrArray. (#114790) * tests/array-test.c (main): Add a test for g_ptr_array_foreach(). --- diff --git a/ChangeLog b/ChangeLog index 4f189911..c48c0859 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +Fri Dec 26 02:03:58 2003 Matthias Clasen + + * glib/garray.[hc] (g_ptr_array_foreach): New function to + call a function for each element of a GPtrArray. (#114790) + + * tests/array-test.c (main): Add a test for g_ptr_array_foreach(). + Sun Dec 21 22:57:58 2003 Matthias Clasen * m4macros/glib-gettext.m4: Quote macro names to support diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index 4f189911..c48c0859 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,10 @@ +Fri Dec 26 02:03:58 2003 Matthias Clasen + + * glib/garray.[hc] (g_ptr_array_foreach): New function to + call a function for each element of a GPtrArray. (#114790) + + * tests/array-test.c (main): Add a test for g_ptr_array_foreach(). + Sun Dec 21 22:57:58 2003 Matthias Clasen * m4macros/glib-gettext.m4: Quote macro names to support diff --git a/ChangeLog.pre-2-12 b/ChangeLog.pre-2-12 index 4f189911..c48c0859 100644 --- a/ChangeLog.pre-2-12 +++ b/ChangeLog.pre-2-12 @@ -1,3 +1,10 @@ +Fri Dec 26 02:03:58 2003 Matthias Clasen + + * glib/garray.[hc] (g_ptr_array_foreach): New function to + call a function for each element of a GPtrArray. (#114790) + + * tests/array-test.c (main): Add a test for g_ptr_array_foreach(). + Sun Dec 21 22:57:58 2003 Matthias Clasen * m4macros/glib-gettext.m4: Quote macro names to support diff --git a/ChangeLog.pre-2-4 b/ChangeLog.pre-2-4 index 4f189911..c48c0859 100644 --- a/ChangeLog.pre-2-4 +++ b/ChangeLog.pre-2-4 @@ -1,3 +1,10 @@ +Fri Dec 26 02:03:58 2003 Matthias Clasen + + * glib/garray.[hc] (g_ptr_array_foreach): New function to + call a function for each element of a GPtrArray. (#114790) + + * tests/array-test.c (main): Add a test for g_ptr_array_foreach(). + Sun Dec 21 22:57:58 2003 Matthias Clasen * m4macros/glib-gettext.m4: Quote macro names to support diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6 index 4f189911..c48c0859 100644 --- a/ChangeLog.pre-2-6 +++ b/ChangeLog.pre-2-6 @@ -1,3 +1,10 @@ +Fri Dec 26 02:03:58 2003 Matthias Clasen + + * glib/garray.[hc] (g_ptr_array_foreach): New function to + call a function for each element of a GPtrArray. (#114790) + + * tests/array-test.c (main): Add a test for g_ptr_array_foreach(). + Sun Dec 21 22:57:58 2003 Matthias Clasen * m4macros/glib-gettext.m4: Quote macro names to support diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index 4f189911..c48c0859 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,3 +1,10 @@ +Fri Dec 26 02:03:58 2003 Matthias Clasen + + * glib/garray.[hc] (g_ptr_array_foreach): New function to + call a function for each element of a GPtrArray. (#114790) + + * tests/array-test.c (main): Add a test for g_ptr_array_foreach(). + Sun Dec 21 22:57:58 2003 Matthias Clasen * m4macros/glib-gettext.m4: Quote macro names to support diff --git a/docs/reference/ChangeLog b/docs/reference/ChangeLog index a197d764..84e8aea0 100644 --- a/docs/reference/ChangeLog +++ b/docs/reference/ChangeLog @@ -1,3 +1,7 @@ +Fri Dec 26 02:04:49 2003 Matthias Clasen + + * glib/glib-sections.txt: Add g_ptr_array_foreach(). + Sun Dec 21 01:01:34 2003 Matthias Clasen * glib/tmpl/misc_utils.sgml: Document the encoding of diff --git a/docs/reference/glib/glib-sections.txt b/docs/reference/glib/glib-sections.txt index d72b76dd..0f27726b 100644 --- a/docs/reference/glib/glib-sections.txt +++ b/docs/reference/glib/glib-sections.txt @@ -1638,6 +1638,7 @@ g_ptr_array_sort_with_data g_ptr_array_set_size g_ptr_array_index g_ptr_array_free +g_ptr_array_foreach diff --git a/glib/garray.c b/glib/garray.c index e38a5a77..21faff3a 100644 --- a/glib/garray.c +++ b/glib/garray.c @@ -639,6 +639,29 @@ g_ptr_array_sort_with_data (GPtrArray *array, user_data); } +/** + * g_ptr_array_foreach: + * @array: a #GPtrArray + * @func: the function to call for each array element + * @user_data: user data to pass to the function + * + * Calls a function for each element of a #GPtrArray. + * + * Since: 2.4 + **/ +void +g_ptr_array_foreach (GPtrArray *array, + GFunc func, + gpointer user_data) +{ + guint i; + + g_return_if_fail (array); + + for (i = 0; i < array->len; i++) + (*func) (array->pdata[i], user_data); +} + /* Byte arrays */ diff --git a/glib/garray.h b/glib/garray.h index b35d99ae..e288a729 100644 --- a/glib/garray.h +++ b/glib/garray.h @@ -126,6 +126,9 @@ void g_ptr_array_sort (GPtrArray *array, void g_ptr_array_sort_with_data (GPtrArray *array, GCompareDataFunc compare_func, gpointer user_data); +void g_ptr_array_foreach (GPtrArray *array, + GFunc func, + gpointer user_data); /* Byte arrays, an array of guint8. Implemented as a GArray, diff --git a/tests/array-test.c b/tests/array-test.c index 4f187919..6d4b5589 100644 --- a/tests/array-test.c +++ b/tests/array-test.c @@ -57,6 +57,15 @@ typedef struct { } GlibTestInfo; +static void +sum_up (gpointer data, + gpointer user_data) +{ + gint *sum = (gint *)user_data; + + *sum += GPOINTER_TO_INT (data); +} + int main (int argc, char *argv[]) @@ -65,6 +74,7 @@ main (int argc, GArray *garray; GPtrArray *gparray; GByteArray *gbarray; + gint sum = 0; /* array tests */ garray = g_array_new (FALSE, FALSE, sizeof (gint)); @@ -93,6 +103,9 @@ main (int argc, for (i = 0; i < 10000; i++) if (g_ptr_array_index (gparray, i) != GINT_TO_POINTER (i)) g_print ("array fails: %p ( %p )\n", g_ptr_array_index (gparray, i), GINT_TO_POINTER (i)); + + g_ptr_array_foreach (gparray, sum_up, &sum); + g_assert (sum == 49995000); g_ptr_array_free (gparray, TRUE);