New function to call a function for each element of a GPtrArray. (#114790)
authorMatthias Clasen <maclas@gmx.de>
Fri, 26 Dec 2003 01:04:12 +0000 (01:04 +0000)
committerMatthias Clasen <matthiasc@src.gnome.org>
Fri, 26 Dec 2003 01:04:12 +0000 (01:04 +0000)
Fri Dec 26 02:03:58 2003  Matthias Clasen  <maclas@gmx.de>

* 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().

ChangeLog
ChangeLog.pre-2-10
ChangeLog.pre-2-12
ChangeLog.pre-2-4
ChangeLog.pre-2-6
ChangeLog.pre-2-8
docs/reference/ChangeLog
docs/reference/glib/glib-sections.txt
glib/garray.c
glib/garray.h
tests/array-test.c

index 4f18991..c48c085 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+Fri Dec 26 02:03:58 2003  Matthias Clasen  <maclas@gmx.de>
+
+       * 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  <maclas@gmx.de>
 
        * m4macros/glib-gettext.m4: Quote macro names to support 
index 4f18991..c48c085 100644 (file)
@@ -1,3 +1,10 @@
+Fri Dec 26 02:03:58 2003  Matthias Clasen  <maclas@gmx.de>
+
+       * 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  <maclas@gmx.de>
 
        * m4macros/glib-gettext.m4: Quote macro names to support 
index 4f18991..c48c085 100644 (file)
@@ -1,3 +1,10 @@
+Fri Dec 26 02:03:58 2003  Matthias Clasen  <maclas@gmx.de>
+
+       * 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  <maclas@gmx.de>
 
        * m4macros/glib-gettext.m4: Quote macro names to support 
index 4f18991..c48c085 100644 (file)
@@ -1,3 +1,10 @@
+Fri Dec 26 02:03:58 2003  Matthias Clasen  <maclas@gmx.de>
+
+       * 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  <maclas@gmx.de>
 
        * m4macros/glib-gettext.m4: Quote macro names to support 
index 4f18991..c48c085 100644 (file)
@@ -1,3 +1,10 @@
+Fri Dec 26 02:03:58 2003  Matthias Clasen  <maclas@gmx.de>
+
+       * 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  <maclas@gmx.de>
 
        * m4macros/glib-gettext.m4: Quote macro names to support 
index 4f18991..c48c085 100644 (file)
@@ -1,3 +1,10 @@
+Fri Dec 26 02:03:58 2003  Matthias Clasen  <maclas@gmx.de>
+
+       * 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  <maclas@gmx.de>
 
        * m4macros/glib-gettext.m4: Quote macro names to support 
index a197d76..84e8aea 100644 (file)
@@ -1,3 +1,7 @@
+Fri Dec 26 02:04:49 2003  Matthias Clasen  <maclas@gmx.de>
+
+       * glib/glib-sections.txt: Add g_ptr_array_foreach().
+
 Sun Dec 21 01:01:34 2003  Matthias Clasen  <maclas@gmx.de>
 
        * glib/tmpl/misc_utils.sgml: Document the encoding of 
index d72b76d..0f27726 100644 (file)
@@ -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
 
 </SECTION>
 
index e38a5a7..21faff3 100644 (file)
@@ -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 
  */
 
index b35d99a..e288a72 100644 (file)
@@ -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,
index 4f18791..6d4b558 100644 (file)
@@ -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);