Bug 523939 – Example program for GValue
authorBjörn Lindqvist <bjourne@gmail.com>
Fri, 22 Aug 2008 18:23:05 +0000 (18:23 +0000)
committerBjörn Lindqvist <bjornl@src.gnome.org>
Fri, 22 Aug 2008 18:23:05 +0000 (18:23 +0000)
2008-08-22  Björn Lindqvist  <bjourne@gmail.com>

Bug 523939 – Example program for GValue

* gobject/gvalue.c: Add code example that demonstrates GValue's
features.

svn path=/trunk/; revision=7387

ChangeLog
gobject/gvalue.c

index 6aed61c..65d32e2 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2008-08-22  Björn Lindqvist  <bjourne@gmail.com>
+
+       Bug 523939 – Example program for GValue
+
+       * gobject/gvalue.c: Add code example that demonstrates GValue's
+       features.
+
 2008-08-21  Tor Lillqvist  <tml@novell.com>
 
        * glib/giowin32.c: Minor comment improvements. Improve run-time
index 02089f6..85187b7 100644 (file)
  * by the #GTypeValueTable associated with the type ID stored in the #GValue.
  * Other #GValue operations (such as converting values between types) are
  * provided by this interface.
+ *
+ * The code in the example program below demonstrates #GValue's
+ * features.
+ *
+ * |[
+ * #include &lt;glib-object.h&gt;
+ *
+ * static void
+ * int2string (const GValue *src_value,
+ *             GValue       *dest_value)
+ * {
+ *   if (g_value_get_int (src_value) == 42)
+ *     g_value_set_static_string (dest_value, "An important number");
+ *   else
+ *     g_value_set_static_string (dest_value, "What's that?");
+ * }
+ *
+ * int
+ * main (int   argc,
+ *       char *argv[])
+ * {
+ *   /&ast; GValues must start zero-filled &ast;/
+ *   GValue a = {0};
+ *   GValue b = {0};
+ *   const gchar *message;
+ *
+ *   g_type_init ();
+ *
+ *   /&ast; The GValue starts empty &ast;/
+ *   g_assert (!G_VALUE_HOLDS_STRING (&amp;a));
+ *
+ *   /&ast; Put a string in it &ast;/
+ *   g_value_init (&amp;a, G_TYPE_STRING);
+ *   g_assert (G_VALUE_HOLDS_STRING (&amp;a));
+ *   g_value_set_static_string (&amp;a, "Hello, world!");
+ *   g_printf ("%s\n", g_value_get_string (&amp;a));
+ *
+ *   /&ast; Reset it to its pristine state &ast;/
+ *   g_value_unset (&amp;a);
+ *
+ *   /&ast; It can then be reused for another type &ast;/
+ *   g_value_init (&amp;a, G_TYPE_INT);
+ *   g_value_set_int (&amp;a, 42);
+ *
+ *   /&ast; Attempt to transform it into a GValue of type STRING &ast;/
+ *   g_value_init (&amp;b, G_TYPE_STRING);
+ *
+ *   /&ast; An INT is transformable to a STRING &ast;/
+ *   g_assert (g_value_type_transformable (G_TYPE_INT, G_TYPE_STRING));
+ *
+ *   g_value_transform (&amp;a, &amp;b);
+ *   g_printf ("%s\n", g_value_get_string (&amp;b));
+ *
+ *   /&ast; Attempt to transform it again using a custom transform function &ast;/
+ *   g_value_register_transform_func (G_TYPE_INT, G_TYPE_STRING, int2string);
+ *   g_value_transform (&amp;a, &amp;b);
+ *   g_printf ("%s\n", g_value_get_string (&amp;b));
+ *   return 0;
+ * }
+ * ]|
  */