gobject-introspection r1070 - in trunk: . tests/everything



Author: johan
Date: Tue Jan 27 00:34:02 2009
New Revision: 1070
URL: http://svn.gnome.org/viewvc/gobject-introspection?rev=1070&view=rev

Log:
2009-01-26  Johan Dahlin  <jdahlin async com br>

        * tests/everything/everything.c (test_callback):
        * tests/everything/everything.h:
        Add a couple of callback tests.



Modified:
   trunk/ChangeLog
   trunk/tests/everything/everything.c
   trunk/tests/everything/everything.h

Modified: trunk/tests/everything/everything.c
==============================================================================
--- trunk/tests/everything/everything.c	(original)
+++ trunk/tests/everything/everything.c	Tue Jan 27 00:34:02 2009
@@ -747,3 +747,68 @@
 {
   return x;
 }
+
+/**
+ * test_callback:
+ * @callback: (scope call):
+ *
+ **/
+int
+test_callback (TestCallback callback)
+{
+  return callback();
+}
+
+/**
+ * test_callback_user_data:
+ * @callback: (scope call):
+ *
+ * Call - callback parameter persists for the duration of the method
+ * call and can be released on return.
+ **/
+int
+test_callback_user_data (TestCallbackUserData callback,
+                         gpointer user_data)
+{
+  return callback(user_data);
+}
+
+/**
+ * test_callback_destroy_notify:
+ * @callback: (scope notified): 
+ *
+ * Notified - callback persists until a DestroyNotify delegate
+ * is invoked.
+ **/
+int
+test_callback_destroy_notify (TestCallbackUserData callback,
+                              gpointer user_data,
+                              GDestroyNotify notify)
+{
+  int retval;
+
+  retval = callback(user_data);
+  if (notify)
+    notify(user_data);
+
+  return retval;
+}
+
+/**
+ * test_callback_infinte:
+ * @callback: (scope infinte): 
+ *
+ * Infinite - callback persists forever.
+ **/
+
+static GSList *infinite_callbacks = NULL;
+
+int
+test_callback_infinte (TestCallbackUserData callback,
+                       gpointer user_data)
+{
+  infinite_callbacks = g_slist_prepend(infinite_callbacks, callback);
+  
+  return callback(user_data);
+}
+

Modified: trunk/tests/everything/everything.h
==============================================================================
--- trunk/tests/everything/everything.h	(original)
+++ trunk/tests/everything/everything.h	Tue Jan 27 00:34:02 2009
@@ -167,6 +167,7 @@
 gboolean   test_boxed_equals   (TestBoxed *boxed,
 				TestBoxed *other);
 
+/* gobject */
 #define TEST_TYPE_OBJ              (test_obj_get_type ())
 #define TEST_OBJECT(object)        (G_TYPE_CHECK_INSTANCE_CAST ((object), TEST_TYPE_OBJ, TestObj))
 #define TEST_IS_OBJECT(object)     (G_TYPE_CHECK_INSTANCE_TYPE ((object), TEST_TYPE_OBJ))
@@ -187,4 +188,18 @@
 TestObj*   test_obj_new_from_file (const char *x, GError **error);
 double     test_obj_static_method (int x);
 
+/* callback */
+typedef int (*TestCallback) ();
+typedef int (*TestCallbackUserData) (gpointer user_data);
+
+int test_callback (TestCallback callback);
+int test_callback_user_data (TestCallbackUserData callback,
+                             gpointer user_data);
+int test_callback_destroy_notify (TestCallbackUserData callback,
+                                  gpointer user_data,
+                                  GDestroyNotify notify);
+int test_callback_infinte (TestCallbackUserData callback,
+                           gpointer user_data);
+
+
 #endif /* __GITESTTYPES_H__ */



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]