glib r7766 - in trunk: docs/reference/gio gio



Author: ryanl
Date: Mon Jan  5 06:57:16 2009
New Revision: 7766
URL: http://svn.gnome.org/viewvc/glib?rev=7766&view=rev

Log:
2009-01-05  Ryan Lortie  <desrt desrt ca>

        * gio.symbols:
        * ../docs/reference/gio/gio-sections.txt:
        * gsimpleasyncresult.h:
        * gsimpleasyncresult.c: Add g_simple_async_result_is_valid().
        Implementation by Dan Winship.  Closes #566170.



Modified:
   trunk/docs/reference/gio/gio-sections.txt
   trunk/gio/ChangeLog
   trunk/gio/gio.symbols
   trunk/gio/gsimpleasyncresult.c
   trunk/gio/gsimpleasyncresult.h

Modified: trunk/docs/reference/gio/gio-sections.txt
==============================================================================
--- trunk/docs/reference/gio/gio-sections.txt	(original)
+++ trunk/docs/reference/gio/gio-sections.txt	Mon Jan  5 06:57:16 2009
@@ -1002,6 +1002,7 @@
 g_simple_async_result_set_op_res_gboolean
 g_simple_async_result_get_op_res_gboolean
 g_simple_async_result_get_source_tag
+g_simple_async_result_is_valid
 g_simple_async_result_set_handle_cancellation
 g_simple_async_result_complete
 g_simple_async_result_complete_in_idle

Modified: trunk/gio/gio.symbols
==============================================================================
--- trunk/gio/gio.symbols	(original)
+++ trunk/gio/gio.symbols	Mon Jan  5 06:57:16 2009
@@ -634,6 +634,7 @@
 g_simple_async_result_propagate_error 
 g_simple_async_result_set_error 
 g_simple_async_result_set_error_va 
+g_simple_async_result_is_valid
 g_simple_async_report_error_in_idle 
 g_simple_async_report_gerror_in_idle 
 #endif

Modified: trunk/gio/gsimpleasyncresult.c
==============================================================================
--- trunk/gio/gsimpleasyncresult.c	(original)
+++ trunk/gio/gsimpleasyncresult.c	Mon Jan  5 06:57:16 2009
@@ -693,6 +693,48 @@
 }
 
 /**
+ * g_simple_async_result_is_valid:
+ * @result: the #GAsyncResult passed to the _finish function.
+ * @source: the #GObject passed to the _finish function.
+ * @source_tag: the asynchronous function.
+ *
+ * Ensures that the data passed to the _finish function of an async
+ * operation is consistent.  Three checks are performed.
+ * 
+ * First, @result is checked to ensure that it is really a
+ * #GSimpleAsyncResult.  Second, @source is checked to ensure that it
+ * matches the source object of @result.  Third, @source_tag is
+ * checked to ensure that it is equal to the source_tag argument given
+ * to g_simple_async_result_new() (which, by convention, is a pointer
+ * to the _async function corresponding to the _finish function from
+ * which this function is called).
+ *
+ * Returns: #TRUE if all checks passed or #FALSE if any failed.
+ **/ 
+gboolean
+g_simple_async_result_is_valid (GAsyncResult *result,
+                                GObject      *source,
+                                gpointer      source_tag)
+{
+  GSimpleAsyncResult *simple;
+  GObject *cmp_source;
+
+  if (!G_IS_SIMPLE_ASYNC_RESULT (result))
+    return FALSE;
+  simple = (GSimpleAsyncResult *)result;
+
+  cmp_source = g_async_result_get_source_object (result);
+  if (cmp_source != source)
+    {
+      g_object_unref (cmp_source);
+      return FALSE;
+    }
+  g_object_unref (cmp_source);
+
+  return source_tag == g_simple_async_result_get_source_tag (simple);
+}
+
+/**
  * g_simple_async_report_error_in_idle:
  * @object: a #GObject.
  * @callback: a #GAsyncReadyCallback. 

Modified: trunk/gio/gsimpleasyncresult.h
==============================================================================
--- trunk/gio/gsimpleasyncresult.h	(original)
+++ trunk/gio/gsimpleasyncresult.h	Mon Jan  5 06:57:16 2009
@@ -102,6 +102,9 @@
 							    gint                     code,
 							    const char              *format,
 							    va_list                  args);
+gboolean            g_simple_async_result_is_valid         (GAsyncResult            *result,
+                                                            GObject                 *source,
+                                                            gpointer                 source_tag);
 
 void g_simple_async_report_error_in_idle  (GObject            *object,
 					   GAsyncReadyCallback callback,



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