add a test function which calls a closure.
authorJohan Bilien <jobi@via.ecp.fr>
Thu, 20 Nov 2008 11:54:05 +0000 (11:54 +0000)
committerJohan Bilien <jobi@src.gnome.org>
Thu, 20 Nov 2008 11:54:05 +0000 (11:54 +0000)
2008-11-20  Johan Bilien  <jobi@via.ecp.fr>

* tests/everything/everything.[ch]: add a test function which calls a
closure.

svn path=/trunk/; revision=954

ChangeLog
tests/everything/everything.c
tests/everything/everything.h

index 6b7f440..fc817a6 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2008-11-20  Johan Bilien  <jobi@via.ecp.fr>
+
+       * tests/everything/everything.[ch]: add a test function which calls a
+       closure.
+
 2008-11-19  Johan Dahlin  <jdahlin@async.com.br>
 
        * giscanner/cachestore.py:
index d90c98f..6a16230 100644 (file)
@@ -94,6 +94,49 @@ GType test_gtype (GType in)
   return in;
 }
 
+int test_closure (GClosure *closure)
+{
+  GValue return_value = {0, };
+  int ret;
+
+  g_value_init (&return_value, G_TYPE_INT);
+
+  g_closure_invoke (closure,
+                    &return_value,
+                    0, NULL,
+                    NULL);
+
+  ret = g_value_get_int (&return_value);
+
+  g_value_unset(&return_value);
+
+  return ret;
+}
+
+int test_closure_one_arg (GClosure *closure, int arg)
+{
+  GValue return_value = {0, };
+  GValue arguments[1];
+  int ret;
+
+  g_value_init (&return_value, G_TYPE_INT);
+
+  g_value_init (&arguments[0], G_TYPE_INT);
+  g_value_set_int (&arguments[0], arg);
+
+  g_closure_invoke (closure,
+                    &return_value,
+                    1, arguments,
+                    NULL);
+
+  ret = g_value_get_int (&return_value);
+
+  g_value_unset(&return_value);
+  g_value_unset(&arguments[0]);
+
+  return ret;
+}
+
 #if 0
 /************************************************************************/
 /* utf8 */
index 541e51c..9f7cc08 100644 (file)
@@ -65,6 +65,10 @@ void test_gslist_free (GSList *in);
 /* ghash? */
 /* error? */
 
+/* closure */
+int test_closure (GClosure *closure);
+int test_closure_one_arg (GClosure *closure, int arg);
+
 /* enums / flags */
 
 typedef enum